スキャナーのキーボード入力

概要

>(green!)

現在、Java プログラムを作成する場合、データはハードコード化されて固定化されていますが、プログラムをより柔軟にするために、データを柔軟に入力する必要がある場合があります。

Scanner の機能は、キーボードからのデータ入力を柔軟に受け取ることです。

しかし、実際の開発におけるデータは、フロントエンド ページ (ユーザー入力、アップロードなど) からのものです。そのため、一般的に、スキャナーは Web 開発にあまり実用的な影響を与えません

しかし、JavaSE の学習段階では、フロントエンドや各種インターフェースの入力情報がありません.スタンドアロンの場合、スキャナーのキーボード入力を使用することは、プログラムの柔軟性を向上させる非常に良い選択です.

また、一部のテスト シナリオでは、スキャナーのキーボード入力にも特定の用途があるため、スキャナーについて学ぶ必要があります。

使用手順

>(green!)

では、スキャナーのキーボード入力はどのように使用すればよいのでしょうか?

大まかに以下の3段階に分けられます。

  1. パッケージのインポート (IDEA にはパッケージの自動インポート機能がありますが、そのような手順はないと思います)

    import java.util.Scanner;
    
  2. オブジェクトを作成

    Scanner sc = new Scanner(System.in);
    
  3. キーボードから入力されたデータを受け取る

    int x = sc.nextInt();
    

予防:

  1. この段階では、ステップが使用されることを覚えておいてください。後で、各ステップが何をしているのかを詳しく分析しましょう。

  2. 一般に、使いやすさのために、キーボード入力を促す出力ステートメントを追加する必要があります。

    次のコード例を参照してください。

    キーボード入力 int データ
    Scanner sc = new Scanner(System.in);
    // 键盘接收int数据
    System.out.println("请输入一个int数据:");
    int num = sc.nextInt();
    
  3. Scanner を使用してデータを個別に入力する場合、さまざまな方法を選択できます。次に例を示します。

    1. キーボード入力 String 文字列、nextLine メソッドの使用を選択できます。
    2. キーボード入力の int 値。nextInt メソッドの使用を選択できます。
    3. キーボードで double 値を入力するには、nextDouble メソッドの使用を選択できます。
  4. Scanner を使用して複数のデータ型を入力する場合は、上記の方法を混在させないことをお勧めします。例えば:

    Scanner のさまざまな方法を使用して複数のデータを入力する
    int num = sc.nextInt();
    String str = sc.nextLine();
    

    この書き方は実は間違っている!

    複数のタイプのデータを入力する必要がある場合は、常に nextLine メソッドを使用してから、文字列をさまざまな必要なデータ タイプに変換することをお勧めします。

    次のコードを参照してください。

    nextLine メソッドを均一に使用する
    Scanner sc = new Scanner(System.in);
    System.out.println("请键盘录入一个int整数:");
    String numStr = sc.nextLine();
    // 百度查找将String转换成int的方法
    int num = Integer.parseInt(numStr);
    System.out.println("请键盘录入一个字符串:");
    String str = sc.nextLine();
    System.out.println(num);
    System.out.println(str);
    

    もちろん、上記の使用法に疑問がある場合は、引き続き読み進めて理由を学ぶことができます。

    でもスキャナー自体は内容を理解している人なので、理由を知っているかどうかは関係ありません!

理由

>(green!)

Scanner の使用、 next()、nextInt() 、nextLine()などの一連のメソッドの違い:

  1. next() や nextInt() などの一連のメソッド
    • next() などの一連のメソッドは、最初の有効な文字 (非スペース、非改行、非タブ) に遭遇したときにスキャンを開始します。
    • 最初の区切り文字またはターミネータ (スペース、改行、またはタブ) に遭遇すると、スキャンが終了し、スキャンされたコンテンツが取得されます
    • つまり、スペースと改行を含まない、最初にスキャンされた単一の文字列を取得します
  2. nextLine() メソッド
    • メソッド名からわかるように、このメソッドは行の内容を取得し、文字列として受け取るメソッドです。
    • このメソッドは、スペースまたはタブが原因でスキャンを終了しません
    • キャリッジ リターン (ライン フィード) によりスキャンが終了するだけです。

>(red!)

nextLine() メソッドは、改行に遭遇するとスキャンを終了するという特性により、使用時に次の問題が発生します。

Scanner を使用して数値型を受け取り、次に nextLine() メソッドを使用して文字列を受け取る場合、たとえば次のコード:

2 つの Scanner メソッドの混合
Scanner sc = new Scanner(System.in);
sc.nextInt();
sc.nextLine();

値を入力して Enter キーを押すと、プログラムは文字列を待機して受信するのではなく、キーボード入力を直接終了します。その理由は、nextLine() メソッドがキャリッジ リターンに遭遇するとスキャンを終了するためです。そのため、この時点でメソッドが受け取るのは実際には (完全に) 空の文字列です。

多くの解決策があります:

  1. 異なる Scanner オブジェクトを使用して受信できるため、競合があってはなりません

  2. intデータ受信後、改行を受信するデータを受信しないnextLineを追加

  3. 文字列を受け取るには next() メソッドを使用しますが、このメソッドは区切り文字で終了し、行ではないことに注意してください。

  4. 文字列を統一して数値型を受け取り、受け取った後に型変換を行うことができます。(やり方、バイドゥは自分でできます)

    例:int型に変換(文字列を渡してintに変換して受け取る)

    Integer.parseInt()

練習

>(red!)

3 つの簡単な練習問題

  1. キーボードは 2 つの int データを入力し、2 つの int データを合計して結果を出力します。
  2. キーボードから 2 つの値を入力して、2 つの値の最大値を取得します。
  3. int 型、String 型、double 型の 3 つのデータを同時に入力してしまいます。

>(green!)

参照コードは次のとおりです。

参照コード 1
public static void main(String[] args) {
     
     
 Scanner sc = new Scanner(System.in);
 System.out.print("请输入两个int数值:");
 int num1 = sc.nextInt();
 int num2 = sc.nextInt();
 System.out.println("这两个数值的和是:" + (num1 + num2));
}
参照コード 2
public static void main(String[] args) {
     
     
    Scanner sc = new Scanner(System.in);
    System.out.print("请输入两个int数值:");
    int num1 = sc.nextInt();
    int num2 = sc.nextInt();
    System.out.println("这两个数值的最大值是:" + ((num1 > num2) ? num1 : num2));
}
参照コード 3
public static void main(String[] args) {
     
     
    Scanner sc = new Scanner(System.in);
    // 混合录入数据类型时,统一使用nextLine方法
    System.out.println("请输入一个int整数:");
    String numStr = sc.nextLine();
    int num = Integer.parseInt(numStr);
    System.out.println("请输入一个字符串:");
    String str = sc.nextLine();
    System.out.println("请输入一个double数据:");
    String doubleStr = sc.nextLine();
    double doubleNum = Double.parseDouble(doubleStr);
}

おすすめ

転載: blog.csdn.net/gezongbo/article/details/127127819