第19章 標準入力と標準出力

この章では標準入力と標準出力について説明します 。

HOMEPAGE

標準入力と標準出力



Scannerクラスとnextメソッドを使用すると、キーボードから入力された文字列や数値を読み取ることができます。

Scanner scan = new Scanner(System.in);
String str = scan.next();
データ型について次の表のようになります。
メソッド 読込型 読込値
論理値 nextBoolean() boolean true,false
整数 nextByte() byte ‐128~+127
nextShort() Short ‐32,768~+32767
nextInt() Int ‐2,147,483,648~2,147,483,64
nextLong() Long ‐9,223,372,036,854,775,808~+9,223,372,036,854,775,807
浮動小数点 nextFloat() Float ±3.40282347E+38~±1.40239846E‐45
nextDouble() Double ±1.79769313486231507E+378~±4.94065645841246544E‐324
文字列 next() String 文字列(スペース・改行等で区切り)
nextLine() String 文字列(1行)

例:[JSample19_1.java]
package JSample;
import java.util.Scanner;
public class JSample19_1 {

    public static void main(String[] args) {
        System.out.println("キーボードから入力してください");
        Scanner scan = new Scanner(System.in);
        String str = scan.next();
        System.out.println("入力された文字は「" + str + "」です。");
    }
}
実行結果
Hello(入力値)
キーボードから入力してください
入力された文字は「Hello」です。

このプログラムでは、「Hello」と入力しています。このようにして、Scannerでキーボードから入力した文字を表示することができました。
Scannerクラスを使う場合にも、"close"メソッドを使って閉じる必要があります

例:[JSample19_2.java]
package JSample;
import java.util.Scanner;
public class JSample19_2 {
  public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);

    System.out.println("キーボードから入力してください");

    String str = scan.nextLine();
    Boolean boo = scan.nextBoolean();
    Double dbl = scan.nextDouble();
    scan.close();

    System.out.println("Double: " + dbl);
    System.out.println("Boolean: " + boo);
    System.out.println("String: " + str);
  }
}
実行結果
hello(入力値)
true(入力値)
123(入力値)
キーボードから入力してください
Double: 123.0
Boolean: true
String: hello


「InputStreamReaderクラス」、「BufferedReaderクラス」、「readLineメソッド」を組み合わせて使用すると、キーボードから入力された文字列を読み取ることができます。

InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

例:[JSample19_1.java]
package JSample;
public class JSample19_3 {
  public static void main(String[] args) throws IOException {

    InputStreamReader isr = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(isr);
    
    System.out.println("キーボードから入力してください");
    String str = br.readLine();
    br.close();

    System.out.println("入力された文字は「" + str + "」です");
  }
}
実行結果
BufferedReaderのreadLine()メソッドを実行する際 "IOException"という例外が発生する可能性があるため、例外の処理"throws IOException"をしておかなければいけません。
※例外の処理については18章に説明します。


BufferedReaderとScannerの違い
BufferedReaderは文字列しか受け取れないので、数値を扱いたい場合は、文字列を受け取ったあとに数値に変換してあげないといけません。Scannerは"nextInt"メソッドを使うことで数値を直接受け取れることができます。 BufferedReaderのreadLine()メソッドを実行する際 "IOException"という例外が発生する可能性があるため、例外の処理"throws IOException"などをしておかなければいけません。


練習

問題[JEx19_1]
forループで、実行結果が 1*2*3...*nの階乗になるような文を作ってください。ただし、n は キーボードから与えるものとする。

例(入力変数n=10の時):
1!=1
2!=1*2
3!=1*2*3
4!=1*2*3*4
5!=1*2*3*4*5
6!=1*2*3*4*5*6
7!=1*2*3*4*5*6*7
8!=1*2*3*4*5*6*7*8
9!=1*2*3*4*5*6*7*8*9
10!=1*2*3*4*5*6*7*8*9*10

キーボードから入力してください
10!=3628800



戻る