電卓を作成しようとしましたが、ユーザー入力の方法がわからないため、機能しません。
Javaでユーザー入力を取得するにはどうすればよいですか?
電卓を作成しようとしましたが、ユーザー入力の方法がわからないため、機能しません。
Javaでユーザー入力を取得するにはどうすればよいですか?
回答:
要件に基づいて、次のオプションのいずれかを使用できます。
Scanner
クラスimport java.util.Scanner;
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();
BufferedReader
とInputStreamReader
クラスimport java.io.BufferedReader;
import java.io.InputStreamReader;
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
int i = Integer.parseInt(s);
DataInputStream
クラスimport java.io.DataInputStream;
DataInputStream dis = new DataInputStream(System.in);
int i = dis.readInt();
クラスのreadLine
メソッドDataInputStream
は廃止されました。文字列値を取得するには、BufferedReaderで以前のソリューションを使用する必要があります
Console
クラスimport java.io.Console;
Console console = System.console();
String s = console.readLine();
int i = Integer.parseInt(console.readLine());
どうやら、このメソッドは一部のIDEではうまく機能しません。
DataInputStream
バイナリデータの読み取り用であることに注意してください。使用readInt
上のSystem.in
んではない文字データから整数を解析し、その代わりにUnicode値と戻りナンセンスを再解釈します。詳細DataInput#readInt
については、(DataInputStream
implements DataInput
)を参照してください。
最も簡単な方法の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 reader1 = new Scanner(System.in);
ますか?
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
あなたにそれを解析する必要がありますのでint
使用しますInteger.parseInt
。
int accInt = Integer.parseInt(accStr);
簡単なプログラムを作成してユーザーの名前を要求し、応答で入力を使用する内容を出力できます。
または、ユーザーに2つの数値を入力するように依頼すると、それらの数値を加算、乗算、減算、または除算して、計算機の動作と同じようにユーザー入力の回答を印刷できます。
だからあなたはスキャナークラスが必要です。あなたはあなたが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();
文字列によると、intとdoubleは残りの部分でも同じように変化します。コードの先頭にあるimportステートメントを忘れないでください。
ブログ投稿「スキャナークラスとユーザー入力の取得」もご覧ください。
最適な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の使用方法およびCharの行の読み取りを参照してください)
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
。
DataInputStream
説明したいと思います。その説明は、Scanner
プリミティブへのデータの読み取りの使用例と同じに聞こえます。また、ユーザーがユーザー入力を取得する方法がわからない段階にいる場合、標準ライブラリの一部が特定のIDEで使用できない理由を理解していない可能性があります。確かに私はそうです-なぜConsole
利用できないのですか?
try-with-resource
することでより良くなります。
ここで、プログラムはユーザーに数値の入力を求めます。その後、プログラムは数値の桁と桁の合計を出力します。
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; }
}
Scanner
オブジェクトを作成する必要はありません。1つで十分だったでしょう。
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);
System.in
(intのコードの最初の行)はS
、クラス名の資本を持ちます。
ほんの1つの余分な詳細。メモリ/リソースリークの危険を冒したくない場合は、終了時にスキャナーストリームを閉じる必要があります。
myScanner.close();
Java 1.7以降では、これがコンパイル警告としてキャッチされることに注意してください(私がそれを知っているかどうかは尋ねないでください:-)
以下は、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
が複数の例外を生成することを知っています。
のthrows IOException
横main()
に追加し、
DataInputStream input = new DataInputStream(System.in);
System.out.print("Enter your name");
String name = input.readLine();
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);
}
}
BufferedReaderを使用して、次のようなユーザー入力を取得できます。
InputStreamReader inp = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(inp);
// you will need to import these things.
これはあなたがそれらを適用する方法です
String name = br.readline();
したがって、ユーザーが自分の名前をコンソールに入力すると、「文字列名」にその情報が保存されます。
保存したい数値の場合、コードは次のようになります。
int x = Integer.parseInt(br.readLine());
これが役に立てば幸い!
これは、System.in.read()
関数を使用する単純なコードです。このコードは、入力されたものを書き出すだけです。入力を1回だけ取得したい場合は、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;
}
}
}
}
私は以下が好きです:
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?")
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
System.out.println("Welcome to the best program in the world! ");
while (true) {
System.out.print("Enter a query: ");
Scanner scan = new Scanner(System.in);
String s = scan.nextLine();
if (s.equals("q")) {
System.out.println("The program is ending now ....");
break;
} else {
System.out.println("The program is running...");
}
}
}
}
を使用してユーザー入力を取得できますScanner
。next()
for String
やnextInt()
for などのさまざまなデータ型に適切なメソッドを使用して、適切な入力検証を使用できますInteger
。
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();
ユーザー入力を取得する最も簡単な方法は、スキャナーを使用することです。使用方法の例を次に示します。
import java.util.Scanner;
public class main {
public static void main(String[]args) {
Scanner sc=new Scanner(System.in);
int a;
String b;
System.out.println("Type an integer here: ");
a=sc.nextInt();
System.out.println("Type anything here:");
b=sc.nextLine();
コード行はimport java.util.Scanner;
、プログラマーがコードでユーザー入力を使用することをプログラムに通知します。それが言うように、スキャナーユーティリティをインポートします。Scanner sc=new Scanner(System.in);
ユーザー入力を開始するようにプログラムに指示します。その後、文字列または整数を値なしで作成し、それらを行a=sc.nextInt();
またはに配置する必要がありa=sc.nextLine();
ます。これにより、変数にユーザー入力の値が与えられます。その後、コードで使用できます。お役に立てれば。
import java.util.Scanner;
public class userinput {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Name : ");
String name = input.next();
System.out.print("Last Name : ");
String lname = input.next();
System.out.print("Age : ");
byte age = input.nextByte();
System.out.println(" " );
System.out.println(" " );
System.out.println("Firt Name: " + name);
System.out.println("Last Name: " + lname);
System.out.println(" Age: " + age);
}
}
class ex1 {
public static void main(String args[]){
int a, b, c;
a = Integer.parseInt(args[0]);
b = Integer.parseInt(args[1]);
c = a + b;
System.out.println("c = " + c);
}
}
// Output
javac ex1.java
java ex1 10 20
c = 30
args
最初にその配列の長さをチェックせずにの要素にアクセスするための制裁:ダウン投票。
他のユーザーが投稿したように、スキャナーを使用したキーボード入力が可能です。しかし、これらの非常にグラフィックの時代では、グラフィカルユーザーインターフェイス(GUI)なしで電卓を作成しても意味がありません。
最近のJavaでは、これはScene BuilderのようなJavaFXドラッグアンドドロップツールを使用して、電卓のコンソールに似たGUIをレイアウトすることを意味します。シーンビルダーの使用は直感的に簡単で、イベントハンドラーに追加のJavaスキルを必要としないことに注意してください。
ユーザー入力の場合、GUIコンソールの上部に幅の広いTextFieldが必要です。
これは、ユーザーが機能を実行したい番号を入力する場所です。TextFieldの下には、基本的な(つまり、加算/減算/乗算/除算およびメモリ/リコール/クリア)関数を実行する機能ボタンの配列があります。GUIが配置されたら、各ボタン関数をそのJava実装にリンクする「コントローラー」参照を追加できます(プロジェクトのコントローラークラスのメソッドの呼び出しなど)。
このビデオは少し古いですが、シーンビルダーがいかに簡単かを示しています。
Scanner
入手できると非常に良いと思います。