ホームページ >Java >&#&チュートリアル >Javaでの入力データの実装を詳しく解説

Javaでの入力データの実装を詳しく解説

黄舟
黄舟オリジナル
2017-08-13 09:46:511227ブラウズ

Javaプログラム開発の過程では、キーボードから入力値を取得する必要があるのが一般的ですが、Javaには提供されているscanf()のようなキーボード入力値を取得する既成のメソッドがありませんC 言語と C++ が提供する cin() 関数を使用します。 Java にはそのような機能はありませんが、この状況に遭遇したときに私たちが無力であるというわけではありません。次の 3 つの解決策を参照してください:

いくつかの方法を以下に示します:

方法 1: コンソールからキャラクターを受け取る, そして、それを印刷してください

import java.io.*;
public static void main(String [] args) throws IOException{ 
         System.out.print("Enter a Char:"); 
         char i = (char) System.in.read(); 
         System.out.println("your char is :"+i); 
}

このメソッドはキーボードからの入力文字の取得を実現しますが、System.out.read() は 1 つの文字しか取得できません。同時に、入力される変数の型は char のみです。数値を入力して整数変数を取得したい場合は、変数の型を変更する必要があり、さらに面倒です。

方法 2: コンソールから文字列を受け取り、それを出力します。 この質問では、入力した文字列を取得できるように、BufferedReader クラスと InputStreamReader クラス

import java.io.*;
public static void main(String [] args) throws IOException{ 
           BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
           String str = null; 
           System.out.println("Enter your value:"); 
           str = br.readLine(); 
           System.out.println("your value is :"+str); 
}

を使用する必要があります。

方法 3: この方法は、Scanner クラスを使用するのが最も簡単で強力だと思います

import java.util.Scanner;
public static void main(String [] args) { 
         Scanner sc = new Scanner(System.in); 
         System.out.println("请输入你的姓名:"); 
         String name = sc.nextLine(); 
         System.out.println("请输入你的年龄:"); 
         int age = sc.nextInt(); 
         System.out.println("请输入你的工资:"); 
         float salary = sc.nextFloat(); 
         System.out.println("你的信息如下:"); 
         System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary); 
}

このコードは、Scanner クラスが文字列、整数データ、または浮動小数点数型変数に使用されることを示しています。この機能を実現するには、いくつかの小さな変更を加えるだけで済みます。間違いなく彼が最強です!

ただし、3 番目の入力メソッドを使用するときに注意する必要があることが 1 つあります。それは nextLine() 関数です。io パッケージには、next() という同じ機能を持つ関数があります。関数であり、それらの関数は同じですが、実装の違いは何ですか? 次のコードを見てください:

public static void main(String [] args) { 
         Scanner sc = new Scanner(System.in); 
         System.out.println("请输入你的年龄:"); 
         int age = sc.nextInt(); 
         System.out.println("请输入你的姓名:"); 
         String name = sc.nextLine(); 
         System.out.println("请输入你的工资:"); 
         float salary = sc.nextFloat(); 
         System.out.println("你的信息如下:"); 
         System.out.println("姓名:"+name+"\n"+"年龄:"+age+"\n"+"工资:"+salary); 
}

このコードと 3 番目の実装の入力メソッドのサンプル コードの違いは、このコードが最初にあることです。 nextInit() を実行してから nextLine() を実行します。3 番目のメソッドの例は、最初に nextLine() を実行し、次に nextInit() を実行することです。2 つのコードを実行すると、3 番目のメソッドの例が実行されることがわかります。このコードは通常の入力を実現できますが、年齢を入力して Enter キーを押すと、名前の入力をスキップして直接給与の入力に進みました (コードを自分で実行して確認できます)。これはなぜでしょうか。実際、 nextInit() 関数を実行して Enter キーを押した後、復帰文字は nextLine() 関数によって吸収されます。 nextLine 関数)、nextLine() と同じ関数を持つ関数 next() について説明しましたが、両者の違いは next() 関数が復帰文字、タブ、または文字を受け取らないことです。スペース キーなどがあるため、nextLine() 関数を使用してください。このとき、打ったキャリッジ リターン文字がキャリッジ リターン文字に吸収され、プログラムに BUG が発生する可能性があるので注意してください。 ! !

最後に、next() と nextLine() の違いを簡単にまとめてみましょう:

Java では、 next() メソッドは有効なデータを受け取る前に、すべてのスペースやタブ キー、その他の入力を無視します。有効なデータがある場合、これらのキーが見つかったら終了します。 nextLine() はスペースまたはタブ キーを受け入れることができ、その入力は Enter キーで終わる必要があります。

以上がJavaでの入力データの実装を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。