Scanner クラス　

# Scannerクラス
* キーボードやファイルから入力された情報を取り込む。
* Javaで入力処理を行うクラス。入力処理は、キーボードから入力を行う場合や、ファイルから入力を行う場合などに使う。
* 入力処理は、ユーザーによる任意の情報をjavaのプログラムで扱う場合に必要。

## Scannerクラスのメソッド一覧	
| メソッド | 用途 |
|:-:|:-:|
| next  | 区切り文字までの入力を取得する(デフォルトの区切り文字は空白)  |
| nextLine  | 改行までの入力を取得する  |
| nextInt  |  整数の入力を取得する |
| nextDouble |  小数点を含む数値の入力を取得する |
|  nextBoolean |  真偽値の入力を取得する |
| useDelimiter  |  区切り文字を指定する |
|  hasNext |  入力の読み込みが続くか判定する |

### next,nextLine,nextInt,nextDoubleの4つを実装してみる
## next()
```java
ackage text_section_23;
import java.util.Scanner;

public class Scanner_Test1 {

	public static void main(String[] args) {
		
		System.out.println("こちらに入力");
		
		// Scannerクラスのオブジェクトを生成する
		Scanner scanner = new Scanner(System.in);
		
		// 入力された内容を取得する
		String inputwords = scanner.next();
		
		// 入力された内容を出力
		System.out.println(inputwords);
		
		// クローズ
		scanner.close();
	}

}
```
下記がコンソールの表示
1. 
![スクリーンショット 2024-02-17 11.49.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/31f9de2e-72b5-6de2-f333-9c4c1b0bbf66.png)
2.  空白で区切った文字を入力
![スクリーンショット 2024-02-17 11.49.46.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/4c0fefef-4d6f-c107-8d16-72bf861df117.png)
3.  田中　太郎と入力後、エンターキー押下。空白で区切った前の部分のみ(田中)が出力される。

![スクリーンショット 2024-02-17 11.49.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/5a2d1ef5-2ad0-8e2c-0bb8-cbfaf8f08e55.png)

```Java
// 入力された内容を取得する
		String inputwords = scanner.__＿＿＿＿＿();
```
## nextLine()
上記でアンダーバーの部分を目的に合わせて変更すると取得できる文字列を変えれる。
例えば`nextLine()`にすると、開業するまでの文字列を取得できる。
```Java
// 入力された内容を取得する
		String inputwords = scanner.nextLine();
```
実行結果
田中太郎と入力後に、エンターキー押下。
田中太郎が表示される。
![スクリーンショット 2024-02-17 11.58.57.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/f73e3913-267c-cd24-fb8c-43cd929cd2a9.png)

## nextInt()　整数の受け取り
受け取る側の方もintに変更し、`nextInt()`メソッドに変更。
入力された数値を受け取ることができる。
```java
// 入力された内容を取得する
		int inputwords = scanner.nextInt();
```
実行結果
空白の前の部分だけ表示される
![スクリーンショット 2024-02-17 12.04.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/d70b145a-6a52-9343-0ea5-71df7512761c.png)
全角でもOK
![スクリーンショット 2024-02-17 12.04.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/af518716-dcf5-cc8c-a59e-16a187c06f85.png)
ハイフンはエラーが起きる
![スクリーンショット 2024-02-17 12.05.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/bb0408fc-b0d6-38a3-ed91-cc77add8a027.png)

## nextDouble()  小数点
`nextInt()`の部分を`nextDoule`に変更し、受け取る側の方も`douoble`に変更する。
```Java
// 入力された内容を取得する
		double inputwords = scanner.nextDouble();
  ```
実行結果
![スクリーンショット 2024-02-17 15.01.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/1ce3c500-d868-71b0-119a-aa614df1623a.png)
![スクリーンショット 2024-02-17 15.01.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/61296189-4c44-80d8-68ec-1601376cd895.png)

# ファイルから入力を受け取る
あらかじめjavaファイルと同じフォルダに`test.txt`を保存しておく。
![スクリーンショット 2024-02-17 15.26.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/1af870ea-ca65-6c56-2c48-edeb9813507b.png)


* `Scanner`クラスでオブジェクトを生成する際に`test.txt`を渡す
* `new File(ファイルパス)`で、Fileオブジェクトが生成される


```java
Scanner Scannerクラスのオブジェクト = new Scanner(new File(ファイルパス))
```

```Java
package text_section_23;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Scanner_Test7 {

	public static void main(String[] args) throws FileNotFoundException {
		// Scannerクラスのオブジェクトを生成
		Scanner scanner = new Scanner(new File("/Users/◆◆◆◆◆◆◆/◆◆◆◆◆◆◆/study/java_workspace/study/src/text_section_23/test.txt"));
		
		//ファイルの読み込みが続く場合、処理を続ける
	      while(scanner.hasNext()) {
	         //改行までの入力を受け取る
	         String input= scanner.nextLine();
	         System.out.println(input);
	}

	}

}
```
実行結果
![スクリーンショット 2024-02-17 15.43.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3570384/a9ef4edf-bc63-7f05-eb85-6a34e33ac83a.png)

## `hasNext()`メソッド

上記のファイルを取り入れるコードの一連の中にあった下記の部分の解説。
```java
//ファイルの読み込みが続く場合、処理を続ける
	      while(scanner.hasNext()) {
	         //改行までの入力を受け取る
	         String input= scanner.nextLine();
	         System.out.println(input);
	}
 ```
渡したファイルは3行あります。
`hasNext()`メソッドで3回読み込みが続き、`nextLine()`で改行より前の文字列を読み込む処理を3回繰り返している。