1. ホーム
  2. java

[解決済み] Scanner input = new Scanner(System.in)とは、実際にはどういう意味ですか?

2022-03-15 02:16:18

質問

Scanner input = new Scanner(System.in);

上のコードが何をしているのか、順を追って詳しく説明していただけませんか?このコードがどのように機能し、後でこのステートメントを実行できるようになることとどのようにリンクしているのか、よく理解できていません。

int i = input.nextInt()

解決方法は?

さて、ここで Scanner クラスがあります。

これはOracleの標準的なクラスで、これを使用するには import java.util.Scanner .

では、このクラスの基本的な例を作ってみましょう。

class Scanner {
   InputStream source;

   Scanner(InputStream src) {
       this.source = src;
   }

   int nextInt() {
       int nextInteger;
       //Scans the next token of the input as an int from the source.
       return nextInteger;
   }
}

これで Scanner input = new Scanner(System.in); の新しいオブジェクトを作成します。 Scanner クラスを作成し (つまり、新しい "Scanner" を作成し)、それを変数 input . 同時に、(いわゆる) コンストラクタ クラスの、パラメータ System.in . つまり、プログラムの標準入力ストリームから読み込もうとしているのです。

今、あなたが input.nextInt(); は、先ほど作成したオブジェクトからメソッドを実行します(さらに 文書化 ). しかし見ての通り、このメソッドは整数を返すので、もしその整数を使いたいなら、あなたのように呼び出し先を変数に代入する必要があります。

int i = input.nextInt();