Bagaimana cara mendapatkan input pengguna di Java?

318

Saya mencoba membuat kalkulator, tetapi saya tidak bisa membuatnya berfungsi karena saya tidak tahu cara mendapatkan input pengguna .

Bagaimana saya bisa mendapatkan input pengguna di Java?

Jtvd78
sumber
8
Eh, apa pertanyaanmu? Anda baru saja memposting beberapa kode dan berkata Anda tidak suka pointer. Tidak mengerti pointer masih bisa kembali menggigit Anda di java jika Anda tidak mengerti pass by reference dan pass by value.
Scott
4
Anda harus mencoba belajar java membaca buku, Java How to Program, 7 / e adalah buku yang bagus
Marco Aviles

Jawaban:

334

Anda dapat menggunakan salah satu opsi berikut berdasarkan persyaratan.

Scanner kelas

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

BufferedReaderdan InputStreamReaderkelas

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 kelas

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

The readLinemetode dari DataInputStreamkelas telah usang . Untuk mendapatkan nilai String, Anda harus menggunakan solusi sebelumnya dengan BufferedReader


Console kelas

import java.io.Console;
Console console = System.console();
String s = console.readLine();
int i = Integer.parseInt(console.readLine());

Tampaknya, metode ini tidak berfungsi dengan baik di beberapa IDE.

Richie
sumber
4
Perhatikan bahwa DataInputStreamini untuk membaca data biner. Menggunakan readIntpada System.intidak tidak mengurai integer dari data karakter, itu malah akan menafsirkan nilai-nilai unicode dan kembali omong kosong. Lihat DataInput#readIntdetail ( DataInputStreamimplementasi DataInput).
Radiodef
3
ini hebat, akan senang melihat impor yang dibutuhkan ditambahkan untuk kelengkapan. Itu juga akan sangat membantu mereka yang membutuhkannya.
KnightHawk
1
Jawaban ini akan jauh lebih membantu jika disebutkan apa persyaratan sebenarnya. Saya sudah mulai hadiah untuk mencoba memperbaikinya.
temporary_user_name
405

Salah satu cara paling sederhana adalah dengan menggunakan Scannerobjek sebagai berikut:

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();
Marco Aviles
sumber
13
Jika Anda menutup objek Scanner yang dibuka untuk System.in, Anda tidak akan dapat membuka kembali System.in sampai program selesai.
ksnortum
@ksnortum dapatkah saya membuka kembali Scanner reader1 = new Scanner(System.in);?
Abhijit Jagtap
Cobalah. Saya kira tidak.
ksnortum
1
Ya, ksnortum benar, Anda mendapatkan NoSuchElementException. Pertanyaan terkait yang agak berguna tentang mengapa Anda tidak dapat membuka kembali System.in setelah menutupnya .
temporary_user_name
45

Anda dapat menggunakan kelas Pemindai atau kelas Konsol

Console console = System.console();
String input = console.readLine("Enter input:");
benda
sumber
55
Saya pikir System.console akan mengembalikan nol jika kode ini berjalan dari gerhana.
Menangkan Coder
13
Saya percaya ini akan mengembalikan kesalahan yang berjalan dari hampir semua IDE. menegaskan bahwa IntelliJ mengalami masalah yang sama.
Dan Bradbury
1
tetapi mengapa ini nol dalam gerhana?
Mark W
20

Anda bisa mendapatkan input pengguna menggunakan BufferedReader.

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String accStr;  

System.out.println("Enter your Account number: ");
accStr = br.readLine();

Ini akan menyimpan Stringnilai accStrsehingga Anda harus menguraikannya intmenggunakan Integer.parseInt.

int accInt = Integer.parseInt(accStr);
Chirag
sumber
17

Inilah cara Anda mendapatkan input keyboard:

Scanner scanner = new Scanner (System.in);
System.out.print("Enter your name");  
name = scanner.next(); // Get what the user types.
Abdel Raoof
sumber
14

Anda dapat membuat program sederhana untuk menanyakan nama pengguna dan mencetak jawaban yang pernah digunakan input.

Atau minta pengguna untuk memasukkan dua angka dan Anda dapat menambah, melipatgandakan, mengurangi, atau membagi angka-angka itu dan mencetak jawaban untuk input pengguna seperti perilaku kalkulator.

Jadi di sana Anda perlu kelas Scanner. Anda harus import java.util.Scanner;dan dalam kode yang perlu Anda gunakan

Scanner input = new Scanner(System.in);

Input adalah nama variabel.

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

Lihat bagaimana berbeda ini: input.next();, i = input.nextInt();,d = input.nextDouble();

Menurut String, int dan dobel bervariasi cara yang sama untuk sisanya. Jangan lupa pernyataan impor di bagian atas kode Anda.

Lihat juga posting blog "kelas pemindai dan dapatkan Input Pengguna" .

pengguna3598655
sumber
12

Dua opsi terbaik adalah BufferedReaderdan Scanner.

Metode yang paling banyak digunakan adalah Scannerdan saya pribadi lebih suka karena kesederhanaan dan implementasi yang mudah, serta utilitas yang kuat untuk mem-parsing teks menjadi data primitif.

Keuntungan Menggunakan Pemindai

  • ScannerKelas mudah digunakan
  • Input angka yang mudah (int, pendek, byte, float, panjang dan ganda)
  • Pengecualian tidak dicentang yang lebih nyaman. Terserah programmer untuk beradab, dan menentukan atau menangkap pengecualian.
  • Dapat membaca garis, spasi putih, dan token yang dibatasi regex

Keuntungan BufferedInputStream


Secara keseluruhan setiap metode input memiliki tujuan yang berbeda.

  • Jika Anda memasukkan data dalam jumlah besar BufferedReadermungkin lebih baik untuk Anda

  • Jika Anda memasukkan banyak angka, Scannertidak otomatis parsing yang sangat nyaman

Untuk penggunaan yang lebih mendasar saya akan merekomendasikan Scannerkarena lebih mudah digunakan dan lebih mudah untuk menulis program. Berikut adalah contoh cepat cara membuat Scanner. Saya akan memberikan contoh komprehensif di bawah ini tentang cara menggunakanScanner

Scanner scanner = new Scanner (System.in); // create scanner
System.out.print("Enter your name");       // prompt user
name = scanner.next();                     // get user input

(Untuk info lebih lanjut tentang BufferedReaderlihat Cara menggunakan BufferedReader dan melihat Membaca baris Karakter )


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

Catatan: Kelas-kelas lain seperti Consoledan DataInputStreamjuga merupakan alternatif yang layak.

Consolememiliki beberapa fitur canggih seperti kemampuan membaca kata sandi, namun, tidak tersedia di semua IDE (seperti Eclipse). Alasan ini terjadi adalah karena Eclipse menjalankan aplikasi Anda sebagai proses latar belakang dan bukan sebagai proses tingkat atas dengan konsol sistem. Berikut ini tautan ke contoh yang berguna tentang cara mengimplementasikan Consolekelas.

DataInputStreamterutama digunakan untuk membaca input sebagai tipe data primitif, dari aliran input yang mendasarinya, dengan cara yang bebas mesin. DataInputStreambiasanya digunakan untuk membaca data biner. Ini juga menyediakan metode kenyamanan untuk membaca tipe data tertentu. Sebagai contoh, ia memiliki metode untuk membaca UTF String yang dapat berisi sejumlah baris di dalamnya.

Namun, ini adalah kelas yang lebih rumit dan sulit untuk diterapkan sehingga tidak direkomendasikan untuk pemula. Berikut ini tautan ke contoh yang bermanfaat bagaimana menerapkan a DataInputStream.

JFreeman
sumber
Saya akan pergi ke depan dan memanggil pemenang di sini. Sebagian besar jawaban yang sangat bagus, meskipun saya berharap ini lebih mendalam ketika saya ingin menggunakan DataInputStream- deskripsi di sana terdengar identik dengan use case untuk Scanner: membaca data ke dalam primitif. Juga, jika seseorang berada pada tahap di mana mereka tidak tahu bagaimana mendapatkan input pengguna, kemungkinan besar mereka juga tidak mengerti mengapa beberapa bagian dari perpustakaan standar tidak akan tersedia di IDE tertentu. Tentu saja itu yang terjadi pada saya - mengapa Consoletidak tersedia?
temporary_user_name
1
Terima kasih atas tanggapan Anda, saya telah mencoba memperbarui untuk memasukkan lebih banyak klarifikasi. Lihat quora.com/… dan stackoverflow.com/questions/27601520/…
JFreeman
Sempurna. Sekarang inilah jawaban yang dibutuhkan pertanyaan ini selama ini. Kalau saja ada beberapa cara saya bisa mendapatkannya ke atas.
temporary_user_name
Nah, siapa pun yang mau gulir ke bawah akan mendapatkan jawaban yang baik dan perlahan-lahan akan naik :)
JFreeman
1
Terima kasih. Jawaban informatif yang terperinci. Menambahkan try-with-resourceakan membuatnya lebih baik.
Sourabh
8

Di sini, program meminta pengguna untuk memasukkan nomor. Setelah itu, program mencetak digit angka dan jumlah digit.

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);            
    }
}
Miasar
sumber
8

Untuk membaca garis atau string, Anda dapat menggunakan BufferedReaderobjek yang digabungkan dengan yang InputStreamReadersebagai berikut:

BufferedReader bufferReader = new BufferedReader(new InputStreamReader(System.in));
String inputLine = bufferReader.readLine();
Ke Sun
sumber
6

Ini adalah program Anda dari pertanyaan menggunakan 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; }
}
pengguna2505442
sumber
3
Tidak perlu membuat banyak Scannerobjek; satu saja sudah cukup.
jub0bs
5

Gunakan Systemkelas untuk mendapatkan input.

http://fresh2refresh.com/java-tutorial/java-input-output/ :

Bagaimana data diterima dari keyboard?

Kami membutuhkan tiga objek,

  1. System.in
  2. InputStreamReader
  3. BufferedReader

    • InputStreamReader dan BufferedReader adalah kelas dalam paket java.io.
    • Data diterima dalam bentuk byte dari keyboard oleh System.in yang merupakan objek InputStream.
    • Kemudian InputStreamReader membaca byte dan menerjemahkannya menjadi karakter.
    • Kemudian akhirnya objek BufferedReader membaca teks dari aliran input karakter, buffering karakter untuk menyediakan pembacaan karakter, array, dan garis yang efisien.
InputStreamReader inp = new InputStreamReader(system.in);
BufferedReader br = new BufferedReader(inp);
Surendren
sumber
1
System.in(int baris pertama kode) akan memiliki modal Suntuk nama kelas.
KNU
5
Input pemindai = Pemindai baru (System.in);
int integer = input.nextInt ();
String string = input.next ();
long longInteger = input.nextLong ();
Panah
sumber
5

Hanya satu detail ekstra. Jika Anda tidak ingin mengambil risiko kebocoran memori / sumber daya, Anda harus menutup aliran pemindai saat Anda selesai:

myScanner.close();

Perhatikan bahwa java 1.7 dan yang lebih baru menangkap ini sebagai peringatan kompilasi (jangan tanya bagaimana saya tahu itu :-)

Dave Hentchel
sumber
Tetapi tidak jika Scanner terbuka untuk System.in. Anda tidak akan dapat membuka kembali Scanner ke System.in lagi di program Anda.
ksnortum
4
Scanner input = new Scanner(System.in);
String inputval = input.next();
Scott
sumber
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);

    }
}
pembuat kode
sumber
4

Berikut adalah versi yang lebih maju dari jawaban yang diterima yang membahas dua kebutuhan umum:

  • Mengumpulkan input pengguna berulang kali hingga nilai keluar telah dimasukkan
  • Berurusan dengan nilai input yang tidak valid (bukan bilangan bulat dalam contoh ini)

Kode

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

Contoh

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

Perhatikan bahwa tanpa nextLine(), input yang buruk akan memicu pengecualian yang sama berulang kali dalam loop tak terbatas. Anda mungkin ingin menggunakan next()sebagai gantinya tergantung pada keadaan, tetapi tahu bahwa input seperti this has spacesakan menghasilkan beberapa pengecualian.

MarredCheese
sumber
3

Tambahkan throws IOExceptiondi sebelah main(), lalu

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

Sangat mudah untuk mendapatkan input dalam java, yang harus Anda lakukan adalah:

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);
    }
}
akashfugtu
sumber
itu adalah hal yang sama. Anda selalu dapat menginisialisasi array dengan datatype varName [] ATAU datatype []
varName
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);
     }
}
pengguna3503711
sumber
2

Anda bisa mendapatkan input pengguna seperti ini menggunakan BufferedReader:

    InputStreamReader inp = new InputStreamReader(System.in);
    BufferedReader br = new BufferedReader(inp);
    // you will need to import these things.

Ini adalah bagaimana Anda menerapkannya

    String name = br.readline(); 

Jadi ketika pengguna mengetik namanya di konsol, "String name" akan menyimpan informasi itu.

Jika nomor yang ingin Anda simpan, kode akan terlihat seperti ini:

    int x = Integer.parseInt(br.readLine());

Semoga ini bisa membantu!

Radek Martinez
sumber
2

Bisa jadi sesuatu seperti ini ...

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");
}
Amarjit Datta
sumber
1

Ini adalah kode sederhana yang menggunakan System.in.read()fungsi ini. Kode ini hanya menuliskan apa pun yang diketik. Anda dapat menghilangkan loop sementara jika Anda hanya ingin mengambil input sekali, dan Anda dapat menyimpan jawaban dalam array karakter jika Anda memilihnya.

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;
            }
        }
    }   
}    
Zac
sumber
1

Saya suka yang berikut ini:

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

dan misalnya, saya akan melakukan:

String name = this.readLine("What is your name?")
Crt
sumber
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...");
            }
        }
    }
}
Mohammad Mahjoub
sumber
0

Anda bisa mendapatkan input pengguna menggunakan Scanner. Anda dapat menggunakan validasi input yang tepat menggunakan metode yang tepat untuk berbagai tipe data seperti next()untuk Stringatau nextInt()untuk 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();
Pradip Karki
sumber
0

Cara paling sederhana untuk mendapatkan input pengguna adalah menggunakan Scanner. Berikut ini contoh bagaimana seharusnya digunakan:

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

Baris kode import java.util.Scanner;memberi tahu program bahwa programmer akan menggunakan input pengguna dalam kode mereka. Seperti dikatakan, itu mengimpor utilitas pemindai. Scanner sc=new Scanner(System.in);memberitahu program untuk memulai input pengguna. Setelah Anda melakukannya, Anda harus membuat string atau integer tanpa nilai, lalu letakkan di baris a=sc.nextInt();atau a=sc.nextLine();. Ini memberikan variabel nilai input pengguna. Kemudian Anda dapat menggunakannya dalam kode Anda. Semoga ini membantu.

boi yeet
sumber
-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);
    }
}
juan_macipag
sumber
-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
mega
sumber
Sanksi untuk mengakses elemen argstanpa memeriksa panjang array itu terlebih dahulu: downvote.
jub0bs
java ex1
ADTC
-1

Entri keyboard menggunakan Scanner dimungkinkan, seperti yang diposkan orang lain. Tetapi dalam masa-masa yang sangat grafis ini tidak ada gunanya membuat kalkulator tanpa antarmuka pengguna grafis (GUI).

Di Jawa modern ini berarti menggunakan alat drag-and-drop JavaFX seperti Scene Builder untuk mengeluarkan GUI yang menyerupai konsol kalkulator. Perhatikan bahwa menggunakan Scene Builder secara intuitif mudah dan tidak memerlukan keterampilan Java tambahan untuk penangan acaranya yang mungkin sudah Anda miliki.

Untuk input pengguna, Anda harus memiliki TextField lebar di bagian atas konsol GUI.

Di sinilah pengguna memasukkan angka yang ingin mereka jalankan fungsinya. Di bawah TextField, Anda akan memiliki array tombol fungsi yang melakukan fungsi dasar (yaitu menambah / mengurangi / mengalikan / membagi dan memori / mengingat / menghapus). Setelah GUI dihilangkan, Anda kemudian dapat menambahkan referensi 'controller' yang menautkan setiap fungsi tombol ke implementasi Java-nya, misalnya panggilan ke metode di kelas controller proyek Anda.

Video ini agak lama tetapi masih menunjukkan betapa mudahnya Scene Builder digunakan.

Bagasi
sumber
Jawaban ini telah diturunkan - tidak ada alasan yang diberikan. Bagi saya itu satu-satunya cara yang bisa digunakan untuk mendapatkan input pengguna ke aplikasi Java.
Batang
Ini sangat berguna, dan saya tidak mengerti mengapa itu gagal. Namun, jawaban saat ini dan pernyataan karunia menyiratkan bahwa mereka sedang mencari jawaban untuk pengguna masa depan yang ingin mendapatkan input melalui konsol.
JFreeman
Saya hanya tidak melihat ada pengguna Java - kecuali mereka yang terjebak dengan kode yang ditulis dalam versi Java yang lama - yang menggunakan input keyboard Scanner. Terakhir kali saya menjawab posting yang diikat oleh karunia. . .
Batang
Saya memahami keluhan Anda sepenuhnya. Saya pribadi percaya bahwa jawaban Anda sangat berguna sehingga saya tidak mengerti mengapa itu tidak dipilih. Namun, saya sering memiliki program tertulis yang tidak memiliki GUI dan jadi saya percaya bahwa kode yang tepat untuk a Scannersangat baik untuk tersedia.
JFreeman
Jika OP mengatakan itu adalah proses overhead rendah (tertanam?) Dengan layar I / O minimal atau tidak, cukup adil - Pemindai adalah yang mereka butuhkan. Tetapi mereka tidak menyatakan hal seperti itu. OP pada dasarnya meminta kami untuk menerima bahwa frasa ini, "input pengguna", utamanya menyarankan input keyboard atau mengundang kami untuk menafsirkan frasa itu untuk kami sendiri. . .
Trunk