<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>キーボードからの入力</title><revhistory><revision><revnumber>6</revnumber><date>2012-03-22 01:47:25</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>5</revnumber><date>2011-10-15 03:03:28</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>4</revnumber><date>2011-10-15 02:44:17</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>3</revnumber><date>2011-10-15 02:43:08</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>2</revnumber><date>2011-10-10 13:25:34</date><authorinitials>masahiko</authorinitials></revision><revision><revnumber>1</revnumber><date>2011-10-10 13:21:20</date><authorinitials>masahiko</authorinitials></revision></revhistory></articleinfo><section><title>キーボードからの入力</title><para>Javaではあらかじめ用意されているクラスを利用してプログラムを作成することが多い。 </para><itemizedlist><listitem override="none"><para>クラスはパッケージに分けて用意されている。 </para></listitem></itemizedlist><para>キーボードからの入力を数値などに切り分けて読み取るには Scannerクラスを使います。 </para><itemizedlist><listitem override="none"><para>Scannerクラスはjava.utilパッケージ内にある。 </para></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><section><title>使い方</title><para>入力ストリームに対して「つぎの入力を受け取る」という処理を行う。 </para><section><title>初期化</title><para>処理する対象をオブジェクトとして割り当てます。 </para><orderedlist numeration="arabic"><listitem><para>Scannerクラスの変数sを宣言します。 </para></listitem><listitem><para>標準入力(System.in)を引数としてScannerクラスのオブジェクトを生成します。 </para></listitem><listitem><para>生成したオブジェクトをsに割り当てます。 </para><screen><![CDATA[Scanner s = new Scanner(System.in);]]></screen></listitem></orderedlist></section><section><title>次の整数値を読む</title><para>Scannerクラスのオブジェクトに対してnextIntメソッドを行うと 値が返されます。 </para><itemizedlist><listitem override="none"><screen><![CDATA[i = s.nextInt();]]></screen></listitem></itemizedlist></section><section><title>例</title><para>入力した値を２倍して表示するだけのプログラムです。 </para><para>Scannerクラスを利用するときは、１行目のimport文が必要です。 </para><itemizedlist><listitem override="none"><programlisting format="linespecific" language="java" linenumbering="numbered" startinglinenumber="1"><token><![CDATA[import]]></token><![CDATA[ ]]><methodname><![CDATA[java.util.*]]></methodname><![CDATA[;]]>

<token><![CDATA[public]]></token><![CDATA[ ]]><token><![CDATA[class]]></token><![CDATA[ ]]><methodname><![CDATA[Sample1]]></methodname>
<![CDATA[{]]>
<![CDATA[        ]]><token><![CDATA[public]]></token><![CDATA[ ]]><token><![CDATA[static]]></token><![CDATA[ ]]><token><![CDATA[void]]></token><![CDATA[ ]]><methodname><![CDATA[main]]></methodname><![CDATA[(]]><methodname><![CDATA[String]]></methodname><![CDATA[[] ]]><methodname><![CDATA[args]]></methodname><![CDATA[)]]>
<![CDATA[        {]]>
<![CDATA[                ]]><token><![CDATA[int]]></token><![CDATA[ ]]><methodname><![CDATA[a]]></methodname><![CDATA[, ]]><methodname><![CDATA[k]]></methodname><![CDATA[;]]>
<![CDATA[                ]]><methodname><![CDATA[Scanner]]></methodname><![CDATA[ ]]><methodname><![CDATA[s]]></methodname><![CDATA[ = ]]><token><![CDATA[new]]></token><![CDATA[ ]]><methodname><![CDATA[Scanner]]></methodname><![CDATA[(]]><methodname><![CDATA[System]]></methodname><![CDATA[.]]><methodname><![CDATA[in]]></methodname><![CDATA[);]]>
<![CDATA[                ]]><methodname><![CDATA[System]]></methodname><![CDATA[.]]><methodname><![CDATA[out]]></methodname><![CDATA[.]]><methodname><![CDATA[print]]></methodname><![CDATA[(]]><phrase><![CDATA["input a "]]></phrase><![CDATA[);]]>
<![CDATA[                ]]><methodname><![CDATA[a]]></methodname><![CDATA[ = ]]><methodname><![CDATA[s]]></methodname><![CDATA[.]]><methodname><![CDATA[nextInt]]></methodname><![CDATA[();]]>
<![CDATA[                ]]><methodname><![CDATA[k]]></methodname><![CDATA[ = ]]><methodname><![CDATA[a]]></methodname><![CDATA[ * 2;]]>
<![CDATA[                ]]><methodname><![CDATA[System]]></methodname><![CDATA[.]]><methodname><![CDATA[out]]></methodname><![CDATA[.]]><methodname><![CDATA[println]]></methodname><![CDATA[( ]]><methodname><![CDATA[k]]></methodname><![CDATA[ );]]>
<![CDATA[        }]]>
<![CDATA[}]]>
</programlisting></listitem></itemizedlist><!--rule (<hr>) is not applicable to DocBook--><para> Scannerクラスを使って整数以外のデータを入力することもできます。 </para><para>その他の機能など 詳細はScannerクラスのAPIを調べてください。 調べ方は後日解説。 </para><!--rule (<hr>) is not applicable to DocBook--></section></section><section><title>演習</title><para>整数値を１つ入力し、 その階数のビルの絵を表示するプログラム(Lesson4.java)を作成しなさい。 </para><para>実行例に示すように階数の表示を含めること。 </para><itemizedlist><listitem override="none"><para><inlinemediaobject><imageobject><imagedata fileref="http://ei-www.hyogo-dai.ac.jp/~masahiko/moin.cgi/%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%8B%E3%82%89%E3%81%AE%E5%85%A5%E5%8A%9B?action=AttachFile&amp;do=get&amp;target=Lesson4-2.png"/></imageobject><textobject><phrase>Lesson4-2.png</phrase></textobject></inlinemediaobject> </para></listitem><listitem override="none"><para>入力した値にかかわらずビルの壁はまっすぐなこと。階によって太くなったりしてはいけない。 </para></listitem></itemizedlist><para>上級 </para><itemizedlist><listitem override="none"><para>同じことを、printfの&quot;%d&quot;変換を用いないで、文字列の処理を使って行いなさい。 </para></listitem></itemizedlist></section></section></article>