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?
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?
Jawaban:
Anda dapat menggunakan salah satu opsi berikut berdasarkan persyaratan.
Scanner
kelasimport java.util.Scanner;
Scanner scan = new Scanner(System.in);
String s = scan.next();
int i = scan.nextInt();
BufferedReader
dan InputStreamReader
kelasimport 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
kelasimport java.io.DataInputStream;
DataInputStream dis = new DataInputStream(System.in);
int i = dis.readInt();
The readLine
metode dari DataInputStream
kelas telah usang . Untuk mendapatkan nilai String, Anda harus menggunakan solusi sebelumnya dengan BufferedReader
Console
kelasimport 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.
DataInputStream
ini untuk membaca data biner. Menggunakan readInt
pada System.in
tidak tidak mengurai integer dari data karakter, itu malah akan menafsirkan nilai-nilai unicode dan kembali omong kosong. Lihat DataInput#readInt
detail ( DataInputStream
implementasi DataInput
).
Salah satu cara paling sederhana adalah dengan menggunakan Scanner
objek 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();
Scanner reader1 = new Scanner(System.in);
?
Anda dapat menggunakan kelas Pemindai atau kelas Konsol
Console console = System.console();
String input = console.readLine("Enter input:");
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 String
nilai accStr
sehingga Anda harus menguraikannya int
menggunakan Integer.parseInt
.
int accInt = Integer.parseInt(accStr);
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.
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" .
Dua opsi terbaik adalah BufferedReader
dan Scanner
.
Metode yang paling banyak digunakan adalah Scanner
dan saya pribadi lebih suka karena kesederhanaan dan implementasi yang mudah, serta utilitas yang kuat untuk mem-parsing teks menjadi data primitif.
Keuntungan Menggunakan Pemindai
Scanner
Kelas mudah digunakanKeuntungan BufferedInputStream
Scanner
antara utas )Secara keseluruhan setiap metode input memiliki tujuan yang berbeda.
Jika Anda memasukkan data dalam jumlah besar BufferedReader
mungkin lebih baik untuk Anda
Jika Anda memasukkan banyak angka, Scanner
tidak otomatis parsing yang sangat nyaman
Untuk penggunaan yang lebih mendasar saya akan merekomendasikan Scanner
karena 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 BufferedReader
lihat Cara menggunakan BufferedReader dan melihat Membaca baris Karakter )
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 Console
dan DataInputStream
juga merupakan alternatif yang layak.
Console
memiliki 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 Console
kelas.
DataInputStream
terutama digunakan untuk membaca input sebagai tipe data primitif, dari aliran input yang mendasarinya, dengan cara yang bebas mesin. DataInputStream
biasanya 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
.
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 Console
tidak tersedia?
try-with-resource
akan membuatnya lebih baik.
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);
}
}
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; }
}
Scanner
objek; satu saja sudah cukup.
Gunakan System
kelas untuk mendapatkan input.
http://fresh2refresh.com/java-tutorial/java-input-output/ :
Bagaimana data diterima dari keyboard?
Kami membutuhkan tiga objek,
- System.in
- InputStreamReader
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);
System.in
(int baris pertama kode) akan memiliki modal S
untuk nama kelas.
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 :-)
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);
}
}
Berikut adalah versi yang lebih maju dari jawaban yang diterima yang membahas dua kebutuhan umum:
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 spaces
akan menghasilkan beberapa pengecualian.
Tambahkan throws IOException
di sebelah main()
, lalu
DataInputStream input = new DataInputStream(System.in);
System.out.print("Enter your name");
String name = input.readLine();
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);
}
}
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);
}
}
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!
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");
}
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;
}
}
}
}
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?")
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...");
}
}
}
}
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 String
atau 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();
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.
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
tanpa memeriksa panjang array itu terlebih dahulu: downvote.
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.
Scanner
sangat baik untuk tersedia.