Tôi đã cố gắng tạo một máy tính, nhưng tôi không thể làm cho nó hoạt động được vì tôi không biết làm thế nào để có được đầu vào của người dùng .
Làm cách nào tôi có thể nhận được đầu vào của người dùng trong Java?
Tôi đã cố gắng tạo một máy tính, nhưng tôi không thể làm cho nó hoạt động được vì tôi không biết làm thế nào để có được đầu vào của người dùng .
Làm cách nào tôi có thể nhận được đầu vào của người dùng trong Java?
Câu trả lời:
Bạn có thể sử dụng bất kỳ tùy chọn nào sau đây dựa trên các yêu cầu.
Scanner
lớp họcimport java.util.Scanner;
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();
BufferedReader
và InputStreamReader
các lớp họcimport 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
lớp họcimport java.io.DataInputStream;
DataInputStream dis = new DataInputStream(System.in);
int i = dis.readInt();
Các readLine
phương pháp từ các DataInputStream
lớp đã được tán thành . Để nhận giá trị Chuỗi, bạn nên sử dụng giải pháp trước đó với BufferedReader
Console
lớp họcimport java.io.Console;
Console console = System.console();
String s = console.readLine();
int i = Integer.parseInt(console.readLine());
Rõ ràng, phương pháp này không hoạt động tốt trong một số IDE.
DataInputStream
để đọc dữ liệu nhị phân. Sử dụng readInt
trên System.in
không không phân tích một số nguyên từ các dữ liệu nhân vật, nó sẽ thay diễn giải lại các giá trị unicode và trở lại vô nghĩa. Xem DataInput#readInt
để biết chi tiết ( DataInputStream
thực hiện DataInput
).
Một trong những cách đơn giản nhất là sử dụng một Scanner
đối tượng như sau:
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);
nào?
Bạn có thể sử dụng lớp Scanner hoặc lớp Console
Console console = System.console();
String input = console.readLine("Enter input:");
Bạn có thể nhận được đầu vào của người dùng bằng cách sử dụng BufferedReader
.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String accStr;
System.out.println("Enter your Account number: ");
accStr = br.readLine();
Nó sẽ lưu trữ một String
giá trị accStr
để bạn phải phân tích nó thành int
sử dụng Integer.parseInt
.
int accInt = Integer.parseInt(accStr);
Đây là cách bạn có thể nhận được các đầu vào bàn phím:
Scanner scanner = new Scanner (System.in);
System.out.print("Enter your name");
name = scanner.next(); // Get what the user types.
Bạn có thể tạo một chương trình đơn giản để hỏi tên người dùng và in những gì trả lời sử dụng đầu vào.
Hoặc yêu cầu người dùng nhập hai số và bạn có thể thêm, nhân, trừ hoặc chia các số đó và in câu trả lời cho đầu vào của người dùng giống như hành vi của máy tính.
Vì vậy, bạn cần lớp Scanner. Bạn phải import java.util.Scanner;
và trong mã bạn cần sử dụng
Scanner input = new Scanner(System.in);
Đầu vào là một tên biến.
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
Xem cách này khác: input.next();
, i = input.nextInt();
,d = input.nextDouble();
Theo một Chuỗi, int và double thay đổi theo cách tương tự cho phần còn lại. Đừng quên câu lệnh nhập ở đầu mã của bạn.
Đồng thời xem bài đăng trên blog "Lớp máy quét và nhận Đầu vào của Người dùng" .
Hai lựa chọn tốt nhất là BufferedReader
và Scanner
.
Phương pháp được sử dụng rộng rãi nhất là Scanner
và cá nhân tôi thích nó vì tính đơn giản và dễ thực hiện của nó, cũng như tiện ích mạnh mẽ của nó để phân tích văn bản thành dữ liệu nguyên thủy.
Ưu điểm của việc sử dụng máy quét
Scanner
lớp họcƯu điểm của BufferedInputStream
Scanner
giữa các chủ đề )Nhìn chung mỗi phương thức nhập liệu có mục đích khác nhau.
Nếu bạn nhập một lượng lớn dữ liệu BufferedReader
có thể tốt hơn cho bạn
Nếu bạn nhập nhiều số Scanner
thì phân tích cú pháp tự động rất thuận tiện
Đối với các mục đích sử dụng cơ bản hơn, tôi khuyên bạn nên sử dụng Scanner
vì nó dễ sử dụng hơn và dễ viết chương trình hơn. Dưới đây là một ví dụ nhanh về cách tạo a Scanner
. Tôi sẽ cung cấp một ví dụ toàn diện dưới đây về cách sử dụngScanner
Scanner scanner = new Scanner (System.in); // create scanner
System.out.print("Enter your name"); // prompt user
name = scanner.next(); // get user input
(Để biết thêm thông tin về cách BufferedReader
xem Cách sử dụng BufferedReader và xem Đọc các dòng ký tự )
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
}
}
Lưu ý: Các lớp khác như Console
và DataInputStream
cũng là lựa chọn thay thế khả thi.
Console
có một số tính năng mạnh mẽ như khả năng đọc mật khẩu, tuy nhiên, không có sẵn trong tất cả các IDE (như Eclipse). Lý do điều này xảy ra là do Eclipse chạy ứng dụng của bạn như một quy trình nền chứ không phải là quy trình cấp cao nhất với bảng điều khiển hệ thống. Đây là một liên kết đến một ví dụ hữu ích về cách thực hiện Console
lớp.
DataInputStream
chủ yếu được sử dụng để đọc đầu vào dưới dạng kiểu dữ liệu nguyên thủy, từ luồng đầu vào cơ bản, theo cách độc lập với máy. DataInputStream
thường được sử dụng để đọc dữ liệu nhị phân. Nó cũng cung cấp các phương thức thuận tiện để đọc các loại dữ liệu nhất định. Ví dụ, nó có một phương thức để đọc Chuỗi UTF có thể chứa bất kỳ số lượng dòng nào trong chúng.
Tuy nhiên, nó là một lớp phức tạp hơn và khó thực hiện hơn nên không được khuyến khích cho người mới bắt đầu. Đây là một liên kết đến một ví dụ hữu ích làm thế nào để thực hiện a DataInputStream
.
DataInputStream
- mô tả có âm thanh giống với trường hợp sử dụng để Scanner
: đọc dữ liệu thành nguyên thủy. Ngoài ra, nếu ai đó ở giai đoạn mà họ không biết cách lấy dữ liệu của người dùng, rất có thể họ cũng không hiểu tại sao một số phần của thư viện chuẩn sẽ không có sẵn trong một số IDE nhất định. Chắc chắn đó là trường hợp của tôi-- tại sao Console
không có sẵn?
try-with-resource
sẽ làm cho nó tốt hơn.
Tại đây, chương trình yêu cầu người dùng nhập số. Sau đó, chương trình in các chữ số của số và tổng các chữ số.
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);
}
}
Để đọc một dòng hoặc một chuỗi, bạn có thể sử dụng một BufferedReader
đối tượng kết hợp với một đối tượng InputStreamReader
như sau:
BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
String inputLine = bufferReader.readLine();
Đây là chương trình của bạn từ câu hỏi sử dụng 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
đối tượng như vậy ; một sẽ có đủ.
Sử dụng System
lớp để có được đầu vào.
http://fresh2refresh.com/java-tutorial/java-input-output/ :
Làm thế nào dữ liệu được chấp nhận từ bàn phím?
Chúng ta cần ba đối tượng,
- System.in
- InputStreamReader
Bộ đệm
- InputStreamReader và BufferedReader là các lớp trong gói java.io.
- Dữ liệu được System.in nhận dưới dạng byte từ bàn phím, là đối tượng InputStream.
- Sau đó, InputStreamReader đọc byte và giải mã chúng thành các ký tự.
- Cuối cùng, đối tượng BufferedReader đọc văn bản từ luồng nhập ký tự, đệm các ký tự để cung cấp cho việc đọc hiệu quả các ký tự, mảng và dòng.
InputStreamReader inp = new InputStreamReader(system.in);
BufferedReader br = new BufferedReader(inp);
System.in
(int dòng mã đầu tiên) sẽ có vốn S
cho tên lớp.
Chỉ cần thêm một chi tiết. Nếu bạn không muốn có nguy cơ rò rỉ bộ nhớ / tài nguyên, bạn nên đóng luồng máy quét khi kết thúc:
myScanner.close();
Lưu ý rằng java 1.7 và sau đó xem đây là một cảnh báo biên dịch (đừng hỏi làm sao tôi biết điều đó :-)
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);
}
}
Đây là phiên bản phát triển hơn của câu trả lời được chấp nhận, đáp ứng hai nhu cầu chung:
Mã
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();
}
}
Thí dụ
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...
Lưu ý rằng không có nextLine()
, đầu vào xấu sẽ kích hoạt cùng một ngoại lệ lặp đi lặp lại trong một vòng lặp vô hạn. Bạn có thể muốn sử dụng next()
thay vì tùy thuộc vào hoàn cảnh, nhưng biết rằng lượt thích như thế this has spaces
sẽ tạo ra nhiều ngoại lệ.
Thêm throws IOException
bên cạnh main()
, sau đó
DataInputStream input = new DataInputStream(System.in);
System.out.print("Enter your name");
String name = input.readLine();
Rất đơn giản để có được đầu vào trong java, tất cả những gì bạn phải làm là:
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);
}
}
Bạn có thể nhận đầu vào của người dùng như thế này bằng cách sử dụng BufferedReader:
InputStreamReader inp = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(inp);
// you will need to import these things.
Đây là cách bạn áp dụng chúng
String name = br.readline();
Vì vậy, khi người dùng nhập tên của mình vào bảng điều khiển, "Tên chuỗi" sẽ lưu trữ thông tin đó.
Nếu đó là một số bạn muốn lưu trữ, mã sẽ trông như thế này:
int x = Integer.parseInt(br.readLine());
Hy vọng điều này sẽ giúp!
Có thể là một cái gì đó như thế này ...
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");
}
Đây là một mã đơn giản sử dụng System.in.read()
chức năng. Mã này chỉ viết ra bất cứ điều gì đã được gõ. Bạn có thể thoát khỏi vòng lặp while nếu bạn chỉ muốn nhận đầu vào một lần và bạn có thể lưu câu trả lời trong một mảng ký tự nếu bạn chọn.
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;
}
}
}
}
Tôi thích như sau:
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;
}
}
}
và ví dụ, tôi sẽ làm:
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...");
}
}
}
}
Bạn có thể nhận được đầu vào của người dùng bằng cách sử dụng Scanner
. Bạn có thể sử dụng xác thực đầu vào phù hợp bằng các phương pháp thích hợp cho các loại dữ liệu khác nhau như next()
cho String
hoặc nextInt()
cho 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();
Cách đơn giản nhất để có được đầu vào của người dùng là sử dụng Máy quét. Đây là một ví dụ về cách nó được sử dụng:
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();
Dòng mã import java.util.Scanner;
cho chương trình biết rằng lập trình viên sẽ sử dụng đầu vào của người dùng trong mã của họ. Giống như nó nói, nó nhập khẩu tiện ích máy quét. Scanner sc=new Scanner(System.in);
nói với chương trình để bắt đầu đầu vào của người dùng. Sau khi bạn làm điều đó, bạn phải tạo một chuỗi hoặc số nguyên không có giá trị, sau đó đặt chúng trong dòng a=sc.nextInt();
hoặc a=sc.nextLine();
. Điều này cung cấp cho các biến giá trị của đầu vào người dùng. Sau đó, bạn có thể sử dụng nó trong mã của bạn. Hi vọng điêu nay co ich.
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
mà không kiểm tra độ dài của mảng đó trước: downvote.
Có thể nhập bàn phím bằng Scanner, như những người khác đã đăng. Nhưng trong những thời điểm đồ họa cao này, việc tạo ra một máy tính không có giao diện người dùng đồ họa (GUI) là vô nghĩa.
Trong Java hiện đại, điều này có nghĩa là sử dụng công cụ kéo và thả JavaFX như Trình tạo cảnh để bố trí GUI giống với bảng điều khiển của máy tính. Lưu ý rằng việc sử dụng Trình tạo cảnh rất dễ dàng và không yêu cầu kỹ năng Java bổ sung nào cho trình xử lý sự kiện của nó như những gì bạn đã có.
Đối với đầu vào của người dùng, bạn nên có TextField rộng ở đầu bảng điều khiển GUI.
Đây là nơi người dùng nhập các số mà họ muốn thực hiện các chức năng trên. Bên dưới TextField, bạn sẽ có một loạt các nút chức năng thực hiện các chức năng cơ bản (tức là cộng / trừ / nhân / chia và bộ nhớ / gọi lại / xóa). Khi GUI không hoạt động, bạn có thể thêm các tham chiếu của 'trình điều khiển' liên kết từng chức năng của nút với việc triển khai Java của nó, ví dụ như gọi phương thức trong lớp trình điều khiển của dự án.
Video này hơi cũ nhưng vẫn cho thấy Trình tạo cảnh dễ sử dụng như thế nào.
Scanner
rất tốt để có sẵn.