【Java文法】標準入出力

こんにちは、コイキングです。

本記事では'標準入出力(ユーザーからキーボード操作などにて入力を受け取り、コンソールにて結果を出力)'について、説明したいと思います。

******

# 1. 値を入力する(Scannerクラスを使う)
Scannerクラスはユーザーからデータを入力してもらう様々なメソッドを提供するクラスです。

## 1) 整数データ入力

```
// (int)
int inputInt = sc.nextInt();
System.out.println("Inputed int : "+inputInt);
		
// (long)
long inputLong = sc.nextLong();
System.out.println("Inputed long : "+inputLong);
		
// (byte)
byte inputByte = sc.nextByte();
System.out.println("Inputed byte : "+inputByte);
		
// (short)
short inputshort = sc.nextShort();
System.out.println("Inputed short : "+inputshort);
```

## 2) 文字データ入力

```
char inputChar = sc.next().charAt(0);
System.out.println("Inputed char : "+inputChar);
```

## 3) 文字列データ入力

```
// 文字列が空白を基準にして入力してもらう。
String inputString = sc.next();
System.out.println("Inputed String next : "+inputString);
		
// エンターキーを入力して貰うまでの全体文字列を入力してもらう。
String inputStringNextLine = sc.nextLine();
System.out.println("Inputed String nextLine : "+inputStringNextLine);
```

## 4) 浮動小数点数データ入力

```
// (float)
float inputFloat = sc.nextFloat();
System.out.println("Inputed float : "+inputFloat);
		
// (double)
double inputDouble = sc.nextDouble();
System.out.println("Inputed double : "+inputDouble);
```

## 5) 論理データ入力

```
boolean inputBoolean = sc.nextBoolean();
System.out.println("Inputed boolean : "+inputBoolean);
```

# 2. 値を入力する(BufferedReaderクラスを使う)
BufferedReaderクラスを使いデータを入力してもらうとScannerクラスを使ってデータを入力してもらうことより、速度が速くて入力してもらうデータが多ければ多く程効率が上がります。

しかし、データの入力は文字列として入力してもらうため、StringTokenizerクラスやStringクラスのsplit()メソッドを使って入力してもらう値を切り分ける処理をする必要があります。

```
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
String inputedStringFromBR;
StringTokenizer st = null;
String [] strArray = null;
		
try {
    inputedStringFromBR = br.readLine();
    st = new StringTokenizer(inputedStringFromBR, " "); // 空白を区切りにして文字列を切り分ける
    strArray = new String[st.countTokens()];
    for (int i=0; i<strArray.length; i++) {
        strArray[i] = st.nextToken();
    }
    
} catch (IOException e) {
    e.printStackTrace();
}
    
for (String str : strArray) {
    System.out.println("BufferedReader inputed : "+str);
}
```

# 3. 値を出力する。
## 1) 改行を含めて出力(System.out.println();)

```
System.out.println("Hello World 1");
System.out.println("Hello World 2");

// 結果
// Hello World 1
// Hello World 2
```

## 2) 改行なしで出力(System.out.print();)

```
System.out.print("Hello World 1");
System.out.print("Hello World 2");

// 結果
// Hello World 1Hello World 2
```

## 3) フォーマットを指定して出力(System.out.printf();, String.format();)

```
// System.out.printf("フォーマット", 値1, 値2...);
	
// 1) %d : 整数
System.out.printf("number 1 : %d %n", 100);
System.out.printf("number 1 : %d , number 2 : %d %n", 100, 1500);
		
// 2) %f : 浮動小数点数 
System.out.printf("double 1 : %f %n", 0.15);
System.out.printf("double 2 : %.3f %n", 2.123456); // 小数点 3桁まで出力 
		
// 3) %c : 文字 
System.out.printf("char : %c %n", 'a');
		
// 4) %s : 文字列 
System.out.printf("String : %s-----%s %n", "Hello", "World");
		
// ※ String.format("フォーマット", 値1, 値2...)
System.out.println(String.format("String : %s-----%s %n", "Hello", "World"));
```

******

※ 例示コード
https://github.com/leeyoungseung/algorithmBasic/blob/master/algorithm/src/basic/B_09_IO.java

※ 韓国語のポストは以下のURLで確認できます。
https://koiking.tistory.com/81?category=1068655