Làm thế nào để có được đầu vào của người dùng trong Java?


317

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?


8
Uh, câu hỏi của bạn là gì? Bạn vừa đăng một số mã và nói rằng bạn không thích con trỏ. Không hiểu con trỏ vẫn có thể quay lại cắn bạn trong java nếu bạn không hiểu chuyển qua tham chiếu và vượt qua giá trị.
Scott

4
bạn nên cố gắng học java đọc một cuốn sách, Cách lập trình Java, 7 / e là một cuốn sách hay
Marco Aviles

Câu trả lời:


333

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ọc

import java.util.Scanner; 
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();

BufferedReaderInputStreamReadercác lớp học

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 lớp học

import java.io.DataInputStream;
DataInputStream dis = new DataInputStream(System.in);
int i = dis.readInt();

Các readLinephương pháp từ các DataInputStreamlớ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ọc

import 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.


4
Lưu ý rằng DataInputStreamđể đọc dữ liệu nhị phân. Sử dụng readInttrên System.inkhô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 ( DataInputStreamthực hiện DataInput).
Radiodef

3
Điều này thật tuyệt, rất thích xem nhập khẩu cần thiết được thêm vào cho đầy đủ. Nó cũng sẽ thực sự giúp những người cần nó.
KnightHawk

1
Câu trả lời này sẽ hữu ích hơn rất nhiều nếu nó đề cập đến những yêu cầu thực sự là gì. Tôi đã bắt đầu một tiền thưởng để cố gắng khắc phục điều này.
tạm

405

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();

13
Nếu bạn đóng một đối tượng Scanner được mở vào System.in, bạn sẽ không thể mở lại System.in cho đến khi chương trình kết thúc.
ksnortum

@ksnortum tôi có thể mở lại bằng cách Scanner reader1 = new Scanner(System.in);nào?
Abhijit Jagtap

Thử nó. Tôi không nghĩ vậy.
ksnortum

1
Vâng, ksnortum là đúng, bạn nhận được NoSuchEuityException. Một số câu hỏi liên quan hữu ích về lý do tại sao bạn không thể mở lại System.in sau khi đóng nó .
tạm

45

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:");

55
Tôi nghĩ System.console sẽ trả về null nếu mã này chạy từ nhật thực.
Giành chiến thắng

13
Tôi tin rằng điều này sẽ trả về một lỗi chạy từ hầu hết các IDE. xác nhận rằng intelliJ đang có vấn đề tương tự.
Dan Bradbury

1
nhưng tại sao đây là một null trong nhật thực?
Đánh dấu

20

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 Stringgiá trị accStrđể bạn phải phân tích nó thành intsử dụng Integer.parseInt.

int accInt = Integer.parseInt(accStr);

17

Đâ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.

14

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" .


12

Hai lựa chọn tốt nhất là BufferedReaderScanner.

Phương pháp được sử dụng rộng rãi nhất là Scannervà 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

  • Dễ dàng sử dụng Scannerlớp học
  • Dễ dàng nhập số (int, short, byte, float, long và double)
  • Các ngoại lệ được bỏ chọn mà thuận tiện hơn. Điều này tùy thuộc vào lập trình viên, và chỉ định hoặc nắm bắt các ngoại lệ.
  • Có thể đọc các dòng, khoảng trắng và mã thông báo được phân định bằng regex

Ưu điểm của BufferedInputStream


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 BufferedReadercó thể tốt hơn cho bạn

  • Nếu bạn nhập nhiều số Scannerthì 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 Scannervì 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 BufferedReaderxem Cách sử dụng BufferedReader và xem Đọc các dòng ký tự )


java.util.Scanner

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ư ConsoleDataInputStreamcũng là lựa chọn thay thế khả thi.

Consolecó 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 Consolelớp.

DataInputStreamchủ 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. DataInputStreamthườ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.


Tôi sẽ đi trước và gọi người chiến thắng ở đây. Chủ yếu là câu trả lời khá tuyệt vời, mặc dù tôi muốn nó đi sâu hơn vào khi tôi muốn sử dụng 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 Consolekhông có sẵn?
tạm

1
Cảm ơn phản hồi của bạn, tôi đã cố gắng cập nhật để làm rõ hơn. Xem quora.com/ Từstackoverflow.com/questions/27601520/ trên
JFreeman

Hoàn hảo. Bây giờ đây chính xác là câu trả lời câu hỏi này cần thiết tất cả cùng. Nếu chỉ có một số cách tôi có thể đưa nó lên đầu.
tạm

Chà, bất cứ ai sẵn sàng cuộn xuống sẽ nhận được câu trả lời tốt và dần dần nó sẽ tăng lên :)
JFreeman

1
Cảm ơn. Trả lời thông tin chi tiết. Thêm try-with-resourcesẽ làm cho nó tốt hơn.
Sourabh

8

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);            
    }
}

8

Để đọ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 InputStreamReadernhư sau:

BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
String inputLine = bufferReader.readLine();

6

Đâ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; }
}

3
Không cần phải tạo ra nhiều Scannerđối tượng như vậy ; một sẽ có đủ.
jub0bs

5

Sử dụng Systemlớ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,

  1. System.in
  2. InputStreamReader
  3. 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);

1
System.in(int dòng mã đầu tiên) sẽ có vốn Scho tên lớp.
KNU

5
Đầu vào máy quét = máy quét mới (System.in);
int số nguyên = input.nextInt ();
Chuỗi chuỗi = input.next ();
longInteger = input.nextLong ();

5

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 đó :-)


Nhưng không, nếu Scanner được mở cho System.in. Bạn sẽ không thể mở lại Máy quét thành System.in một lần nữa trong chương trình của bạn.
ksnortum

4
Scanner input = new Scanner(System.in);
String inputval = input.next();

4
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);

    }
}

4

Đâ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:

  • Thu thập đầu vào của người dùng nhiều lần cho đến khi nhập giá trị thoát
  • Xử lý các giá trị đầu vào không hợp lệ (không có số nguyên trong ví dụ này)

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 spacessẽ tạo ra nhiều ngoại lệ.


3

Thêm throws IOExceptionbên cạnh main(), sau đó

DataInputStream input = new DataInputStream(System.in);
System.out.print("Enter your name");
String name = input.readLine();

3

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);
    }
}

đó là một thứ tương tự. Bạn luôn có thể khởi tạo một mảng với datatype varName [] OR datatype [] varName
user2277872

3
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);
     }
}

2

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!


2

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");
}

1

Đâ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;
            }
        }
    }   
}    

1

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?")

1
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...");
            }
        }
    }
}

0

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 Stringhoặ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();

0

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.


-1
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);
    }
}

-1
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

Việc xử phạt truy cập các phần tử của argsmà không kiểm tra độ dài của mảng đó trước: downvote.
jub0bs


-1

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.


Câu trả lời này đã bị từ chối - không có lý do. Đối với tôi đó là cách duy nhất có thể sử dụng để đưa người dùng nhập vào ứng dụng Java.
Thân cây

Điều này rất hữu ích và tôi không hiểu tại sao nó lại bị bỏ phiếu. Tuy nhiên, các câu trả lời hiện tại và tuyên bố tiền thưởng ngụ ý rằng họ đang tìm kiếm một câu trả lời cho những người dùng trong tương lai muốn có được đầu vào thông qua bảng điều khiển.
JFreeman

Tôi chỉ không thấy bất kỳ người dùng Java nào - chặn những người bị mắc kẹt với mã được viết bằng các phiên bản Java cũ - có bất kỳ việc sử dụng nào cho đầu vào bàn phím Scanner. Lần trước tôi đang trả lời một bài đăng tiền thưởng. . .
Thân cây

Tôi hiểu khiếu nại của bạn hoàn toàn. Cá nhân tôi tin rằng câu trả lời của bạn rất hữu ích vì vậy tôi không hiểu tại sao nó lại bị bỏ phiếu. Tuy nhiên, trong nhiều trường hợp, tôi có các chương trình bằng văn bản không có GUI và vì vậy tôi tin rằng mã phù hợp cho một mã Scannerrất tốt để có sẵn.
JFreeman

Nếu OP cho biết đó là một số quy trình (nhúng?) Thấp với I / O tối thiểu hoặc không có màn hình, đủ công bằng - Máy quét là thứ họ cần. Nhưng họ tuyên bố không có điều đó. OP về cơ bản yêu cầu chúng tôi chấp nhận rằng cụm từ này, "đầu vào của người dùng", chủ yếu gợi ý đầu vào bàn phím hoặc người khác mời chúng tôi diễn giải cụm từ cho chính mình. . .
Thân cây
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.