計算機を作成しようとしましたが、 ユーザ入力を取得する方法 がわからないため、機能させることができません。
Javaでユーザー入力を取得する方法
最も簡単な方法の1つは、以下のようにScanner
オブジェクトを使用することです。
import Java.util.Scanner;
Scanner reader = new Scanner(System.in); // Reading from System.in
System.out.println("Enter a number: ");
int n = reader.nextInt(); // Scans the next token of the input as an int.
//once finished
reader.close();
要件に基づいて、以下のオプションのいずれかを使用できます。
Scanner
classimport Java.util.Scanner;
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();
BufferedReader
および InputStreamReader
classesimport Java.io.BufferedReader;
import Java.io.InputStreamReader;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int i = Integer.parseInt(br.readLine());
DataInputStream
classimport Java.io.DataInputStream;
DataInputStream dis = new DataInputStream(System.in);
int i = dis.readInt();
readLine
クラスのDataInputStream
メソッドは、廃止予定です。文字列値を取得するには、BufferedReaderを使用して以前のソリューションを使用する必要があります。
Console
classimport Java.io.Console;
Console console = System.console();
String s = console.readLine();
int i = Integer.parseInt(console.readLine());
どうやら、このメソッドはいくつかのIDEでうまく機能しません。
Scanner クラスまたはConsoleクラスを使用できます。
Console console = System.console();
String input = console.readLine("Enter input:");
BufferedReader
を使用してユーザー入力を取得できます。
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String accStr;
System.out.println("Enter your Account number: ");
accStr = br.readLine();
これはString
の値をaccStr
に格納するため、 Integer.parseInt
を使用してint
に解析する必要があります。
int accInt = Integer.parseInt(accStr);
キーボード入力を取得する方法は次のとおりです。
Scanner scanner = new Scanner (System.in);
System.out.print("Enter your name");
name = scanner.next(); // Get what the user types.
簡単なプログラムを作成してユーザーの名前を尋ね、返信に使用された内容を印刷することができます。
または、2つの数字を入力するようにユーザーに要求し、それらの数字を加算、乗算、減算、または除算して、計算機の動作と同じようにユーザー入力の回答を印刷できます。
だからあなたはScannerクラスが必要です。あなたはimport Java.util.Scanner;
とあなたが使用する必要があるコードでなければなりません
Scanner input = new Scanner(System.in);
入力は変数名です。
Scanner input = new Scanner(System.in);
System.out.println("Please enter your name : ");
s = input.next(); // getting a String value
System.out.println("Please enter your age : ");
i = input.nextInt(); // getting an integer
System.out.println("Please enter your salary : ");
d = input.nextDouble(); // getting a double
input.next();
、i = input.nextInt();
、d = input.nextDouble();
の違いを見てください。
Stringによると、intとdoubleは他のものと同じように変化します。コードの先頭にあるimport文を忘れないでください。
ブログ記事 "スキャナクラスとユーザ入力の取得" もご覧ください。
行または文字列を読み込むには、次のようにBufferedReader
オブジェクトをInputStreamReader
オブジェクトと組み合わせて使用できます。
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
String inputLine = bufferReader.readLine();
ここでは、プログラムはユーザーに番号の入力を求めます。その後、プログラムは数字の数字と数字の合計を印刷します。
import Java.util.Scanner;
public class PrintNumber {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int num = 0;
int sum = 0;
System.out.println(
"Please enter a number to show its digits");
num = scan.nextInt();
System.out.println(
"Here are the digits and the sum of the digits");
while (num > 0) {
System.out.println("==>" + num % 10);
sum += num % 10;
num = num / 10;
}
System.out.println("Sum is " + sum);
}
}
これがJava.util.Scanner
を使った質問からのあなたのプログラムです:
import Java.util.Scanner;
public class Example {
public static void main(String[] args) {
int input = 0;
System.out.println("The super insano calculator");
System.out.println("enter the corrosponding number:");
Scanner reader3 = new Scanner(System.in);
System.out.println(
"1. Add | 2. Subtract | 3. Divide | 4. Multiply");
input = reader3.nextInt();
int a = 0, b = 0;
Scanner reader = new Scanner(System.in);
System.out.println("Enter the first number");
// get user input for a
a = reader.nextInt();
Scanner reader1 = new Scanner(System.in);
System.out.println("Enter the scend number");
// get user input for b
b = reader1.nextInt();
switch (input){
case 1: System.out.println(a + " + " + b + " = " + add(a, b));
break;
case 2: System.out.println(a + " - " + b + " = " + subtract(a, b));
break;
case 3: System.out.println(a + " / " + b + " = " + divide(a, b));
break;
case 4: System.out.println(a + " * " + b + " = " + multiply(a, b));
break;
default: System.out.println("your input is invalid!");
break;
}
}
static int add(int lhs, int rhs) { return lhs + rhs; }
static int subtract(int lhs, int rhs) { return lhs - rhs; }
static int divide(int lhs, int rhs) { return lhs / rhs; }
static int multiply(int lhs, int rhs) { return lhs * rhs; }
}
もう1つだけ詳しく説明します。あなたがメモリ/リソースリークを危険にさらしたくない場合は、終了したらスキャナストリームを閉じるべきです:
myScanner.close();
Java 1.7以降ではこれをコンパイルの警告として捉えていることに注意してください(私がどうやってそれを知っているのか尋ねないでください:-)
スキャナ入力=新しいスキャナ(System.in); int integer = input.nextInt(); 文字列string = input.next(); long longInteger = input.nextLong();
入力を取得するにはSystem
クラスを使用します。
http://fresh2refresh.com/Java-tutorial/Java-input-output/ :
キーボードからどのようにデータが受け入れられますか?
3つのオブジェクトが必要です
- System.in
- InputStreamReader
BufferedReader
- InputStreamReaderとBufferedReaderは、Java.ioパッケージのクラスです。
- データは、InputStreamオブジェクトであるSystem.inによってキーボードからバイトの形式で受信されます。
- その後、InputStreamReaderはバイトを読み取り、それらを文字にデコードします。
- その後、BufferedReaderオブジェクトは文字入力ストリームからテキストを読み取り、文字、配列、および行を効率的に読み取るために文字をバッファリングします。
InputStreamReader inp = new InputStreamReader(system.in);
BufferedReader br = new BufferedReader(inp);
import Java.util.Scanner;
class Daytwo{
public static void main(String[] args){
System.out.println("HelloWorld");
Scanner reader = new Scanner(System.in);
System.out.println("Enter the number ");
int n = reader.nextInt();
System.out.println("You entered " + n);
}
}
最良の2つのオプションはBufferedReader
とScanner
です。
最も広く使われている方法はScanner
であり、私はそれが単純で実装が簡単であること、そしてテキストを原始データにパースする強力な有用性のために私は個人的にそれを好みます。
スキャナを使用する利点
Scanner
クラスを使いやすいBufferedInputStreamの利点
Scanner
を共有することはできません )全体的に各入力メソッドは異なる目的を持っています。
大量のデータを入力している場合は、BufferedReader
が良いでしょう。
あなたがたくさんの数を入力しているならScanner
は自動解析をするのでとても便利です。
もっと基本的な使い方としては、Scanner
を使うのがより簡単でプログラムを書くのも簡単なのでお勧めします。これはScanner
を作成する方法の簡単な例です。以下にScanner
の使い方の包括的な例を示します。
Scanner scanner = new Scanner (System.in); // create scanner
System.out.print("Enter your name"); // Prompt user
name = scanner.next(); // get user input
(BufferedReader
に関するさらなる情報は BufferedReader の使い方と Charsの行の読み方 をご覧ください。)
import Java.util.InputMismatchException; // import the exception catching class
import Java.util.Scanner; // import the scanner class
public class RunScanner {
// main method which will run your program
public static void main(String args[]) {
// create your new scanner
// Note: since scanner is opened to "System.in" closing it will close "System.in".
// Do not close scanner until you no longer want to use it at all.
Scanner scanner = new Scanner(System.in);
// Prompt THE USER
// Note: when using scanner it is recommended to Prompt the user with "System.out.print" or "System.out.println"
System.out.println("Please enter a number");
// use "try" to catch invalid inputs
try {
// get integer with "nextInt()"
int n = scanner.nextInt();
System.out.println("Please enter a decimal"); // Prompt
// get decimal with "nextFloat()"
float f = scanner.nextFloat();
System.out.println("Please enter a Word"); // Prompt
// get single Word with "next()"
String s = scanner.next();
// ---- Note: Scanner.nextInt() does not consume a nextLine character /n
// ---- In order to read a new line we first need to clear the current nextLine by reading it:
scanner.nextLine();
// ----
System.out.println("Please enter a line"); // Prompt
// get line with "nextLine()"
String l = scanner.nextLine();
// do something with the input
System.out.println("The number entered was: " + n);
System.out.println("The decimal entered was: " + f);
System.out.println("The Word entered was: " + s);
System.out.println("The line entered was: " + l);
}
catch (InputMismatchException e) {
System.out.println("\tInvalid input entered. Please enter the specified input");
}
scanner.close(); // close the scanner so it doesn't leak
}
}
注:Console
やDataInputStream
などの他のクラスも実行可能な選択肢です。
Console
には、パスワードの読み取り機能などの強力な機能がいくつかありますが、すべてのIDE(Eclipseなど)で利用できるわけではありません。これが発生する理由は、Eclipseがアプリケーションをシステムコンソールのトップレベルプロセスとしてではなくバックグラウンドプロセスとして実行するためです。 Console
クラスの実装方法に関する有用な例へのリンク です。
DataInputStream
は主に、基礎となる入力ストリームから、マシンに依存しない方法で入力をプリミティブデータ型として読み取るために使用されます。 DataInputStream
は通常バイナリデータの読み込みに使われます。特定のデータ型を読み込むための便利なメソッドも提供します。例えば、その中に任意の数の行を含むことができるUTFストリングを読み取るためのメソッドがあります。
しかし、それはより複雑なクラスであり実装するのが難しいので初心者にはお勧めできません。 これはDataInputStream
を実装する方法の便利な例へのリンク です。
これは、2つの一般的なニーズに対応した、受け入れられた答えのより発展したバージョンです。
コード
package inputTest;
import Java.util.Scanner;
import Java.util.InputMismatchException;
public class InputTest {
public static void main(String args[]) {
Scanner reader = new Scanner(System.in);
System.out.println("Please enter integers. Type 0 to exit.");
boolean done = false;
while (!done) {
System.out.print("Enter an integer: ");
try {
int n = reader.nextInt();
if (n == 0) {
done = true;
}
else {
// do something with the input
System.out.println("\tThe number entered was: " + n);
}
}
catch (InputMismatchException e) {
System.out.println("\tInvalid input type (must be an integer)");
reader.nextLine(); // Clear invalid input from scanner buffer.
}
}
System.out.println("Exiting...");
reader.close();
}
}
例
Please enter integers. Type 0 to exit.
Enter an integer: 12
The number entered was: 12
Enter an integer: -56
The number entered was: -56
Enter an integer: 4.2
Invalid input type (must be an integer)
Enter an integer: but i hate integers
Invalid input type (must be an integer)
Enter an integer: 3
The number entered was: 3
Enter an integer: 0
Exiting...
nextLine()
がないと、不正な入力が無限ループ内で同じ例外を繰り返し引き起こすことに注意してください。状況に応じて代わりにnext()
を使用することをお勧めしますが、this has spaces
のような入力は複数の例外を生成することを知っています。
Javaで入力するのはとても簡単です。あなたがしなければならないのは、以下のことです。
import Java.util.Scanner;
class GetInputFromUser
{
public static void main(String args[])
{
int a;
float b;
String s;
Scanner in = new Scanner(System.in);
System.out.println("Enter a string");
s = in.nextLine();
System.out.println("You entered string " + s);
System.out.println("Enter an integer");
a = in.nextInt();
System.out.println("You entered integer " + a);
System.out.println("Enter a float");
b = in.nextFloat();
System.out.println("You entered float " + b);
}
}
import Java.util.Scanner;
public class Myapplication{
public static void main(String[] args){
Scanner in = new Scanner(System.in);
int a;
System.out.println("enter:");
a = in.nextInt();
System.out.println("Number is= " + a);
}
}
Scanner input = new Scanner(System.in);
String inputval = input.next();
main()
の横にthrows IOException
を追加し、
DataInputStream input = new DataInputStream(System.in);
System.out.print("Enter your name");
String name = input.readLine();
このようなことができます...
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println("Enter a number: ");
int i = reader.nextInt();
for (int j = 0; j < i; j++)
System.out.println("I love Java");
}
BufferedReaderを使用して、このようなユーザー入力を取得できます。
InputStreamReader inp = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(inp);
// you will need to import these things.
これはあなたがそれらを適用する方法です
String name = br.readline();
そのため、ユーザーが自分の名前をコンソールに入力すると、 "String name"がその情報を格納します。
それがあなたが保存したい数字であるならば、コードはこのようになります:
int x = Integer.parseInt(br.readLine());
これは助けになります!
私は以下が好きです:
public String readLine(String tPromptString) {
byte[] tBuffer = new byte[256];
int tPos = 0;
System.out.print(tPromptString);
while(true) {
byte tNextByte = readByte();
if(tNextByte == 10) {
return new String(tBuffer, 0, tPos);
}
if(tNextByte != 13) {
tBuffer[tPos] = tNextByte;
++tPos;
}
}
}
そして、例えば、私はします:
String name = this.readLine("What is your name?")
これはSystem.in.read()
関数を使う簡単なコードです。このコードは、入力された内容をすべて書き出します。一度だけ入力したい場合はwhileループを削除できます。また、必要に応じて文字配列に回答を格納することもできます。
package main;
import Java.io.IOException;
public class Root
{
public static void main(String[] args)
{
new Root();
}
public Root()
{
while(true)
{
try
{
for(int y = 0; y < System.in.available(); ++y)
{
System.out.print((char)System.in.read());
}
}
catch(IOException ex)
{
ex.printStackTrace(System.out);
break;
}
}
}
}
他の人が投稿したように、Scannerを使ったキーボード入力が可能です。しかし、これらの高度にグラフィックの時代には、グラフィカルユーザーインターフェース(GUI)なしで計算機を作ることは無意味です。
現代のJavaでは、これは Scene Builder のようなJavaFXドラッグアンドドロップツールを使用して、計算機のコンソールに似たGUIをレイアウトすることを意味します。 Scene Builderを使用するのは直感的に簡単で、そのイベントハンドラのために追加のJavaスキルを必要としないことに注意してください。
ユーザー入力の場合は、GUIコンソールの上部に広いTextFieldがあります。
これは、ユーザーが機能を実行したい番号を入力する場所です。 TextFieldの下には、基本的な(加算/減算/乗算/除算、メモリ/呼び出し/消去)機能を実行する一連の機能ボタンがあります。 GUIが表示されたら、各ボタン機能をそのJava実装にリンクする「コントローラ」参照を追加できます。たとえば、プロジェクトのコントローラクラスのmethodの呼び出しなどです。
このビデオ は少し古くなっていますが、Scene Builderの使い方がまだ簡単であることを示しています。
Scanner
を使用してユーザー入力を取得できます。 String
の場合はnext()
、Integer
の場合はnextInt()
のように、さまざまなデータ型に対して適切なメソッドを使用して、適切な入力検証を使用できます。
import Java.util.Scanner;
Scanner scanner = new Scanner(System.in);
//reads the input until it reaches the space
System.out.println("Enter a string: ");
String str = scanner.next();
System.out.println("str = " + str);
//reads until the end of line
String aLine = scanner.nextLine();
//reads the integer
System.out.println("Enter an integer num: ");
int num = scanner.nextInt();
System.out.println("num = " + num);
//reads the double value
System.out.println("Enter a double: ");
double aDouble = scanner.nextDouble();
System.out.println("double = " + aDouble);
//reads the float value, long value, boolean value, byte and short
double aFloat = scanner.nextFloat();
long aLong = scanner.nextLong();
boolean aBoolean = scanner.nextBoolean();
byte aByte = scanner.nextByte();
short aShort = scanner.nextShort();
scanner.close();