Jakie jest twoje pytanie? Właśnie opublikowałeś kod i powiedziałeś, że nie lubisz wskaźników. Niezrozumienie wskaźników może wciąż wrócić do gryzienia cię w java, jeśli nie rozumiesz przekazywania przez odniesienie i przekazywania przez wartość.
Scott
4
powinieneś spróbować nauczyć się java czytając książkę, Java Jak programować, 7 / e jest fajna
Marco Aviles
Odpowiedzi:
333
Możesz użyć dowolnej z następujących opcji w zależności od wymagań.
import java.io.BufferedReader;import java.io.InputStreamReader;BufferedReader br =newBufferedReader(newInputStreamReader(System.in));String s = br.readLine();int i =Integer.parseInt(s);
Uwaga: DataInputStreamsłuży do odczytu danych binarnych. Korzystanie readIntna System.innie nie analizować liczbę całkowitą od danych znakowych, to zamiast reinterpretacji wartości Unicode i powrót nonsens. Zobacz DataInput#readIntszczegóły ( DataInputStreamnarzędzia DataInput).
Radiodef,
3
to świetnie, chciałbym zobaczyć, że wymagany import został dodany dla kompletności. Pomogłoby to również tym, którzy tego potrzebują.
KnightHawk
1
Ta odpowiedź byłaby o wiele bardziej pomocna, gdyby wspomniała o rzeczywistych wymaganiach. Zacząłem nagrodę, aby spróbować to naprawić.
tymczasowego
405
Jednym z najprostszych sposobów jest użycie Scannerobiektu w następujący sposób:
import java.util.Scanner;Scanner reader =newScanner(System.in);// Reading from System.inSystem.out.println("Enter a number: ");int n = reader.nextInt();// Scans the next token of the input as an int.//once finished
reader.close();
Możesz stworzyć prosty program, który zapyta o nazwę użytkownika i wydrukuje dane wejściowe odpowiedzi.
Możesz też poprosić użytkownika o wprowadzenie dwóch liczb, abyś mógł je dodawać, pomnażać, odejmować lub dzielić i drukować odpowiedzi dla danych wprowadzonych przez użytkownika, tak jak w przypadku kalkulatora.
Więc potrzebujesz klasy skanera. Musisz import java.util.Scanner;i w kodzie musisz użyć
Scanner input =newScanner(System.in);
Dane wejściowe to nazwa zmiennej.
Scanner input =newScanner(System.in);System.out.println("Please enter your name : ");
s = input.next();// getting a String valueSystem.out.println("Please enter your age : ");
i = input.nextInt();// getting an integerSystem.out.println("Please enter your salary : ");
d = input.nextDouble();// getting a double
Zobacz, jak różni: input.next();, i = input.nextInt();,d = input.nextDouble();
Według String, int i double różnią się w ten sam sposób dla reszty. Nie zapomnij instrukcji importu u góry kodu.
Najczęściej stosowaną metodą jest Scanner i ja osobiście wolę ją ze względu na jej prostotę i łatwą implementację, a także jej potężne narzędzie do parsowania tekstu w prymitywne dane.
Zalety korzystania ze skanera
Łatwy w użyciu Scanner klasy
Łatwe wprowadzanie liczb (int, short, byte, float, long i double)
Wyjątki są odznaczone, co jest wygodniejsze. To programista musi zostać cywilizowany i określić lub uchwycić wyjątki.
Potrafi czytać wiersze, białe znaki i tagi rozdzielane wyrażeniami regularnymi
Zalety BufferedInputStream
BufferedInputStream dotyczy odczytu bloków danych zamiast pojedynczego bajtu na raz
Jeśli wprowadzasz dużą ilość danych, BufferedReadermoże być dla Ciebie lepiej
Jeśli wpisujesz wiele liczb Scanner, automatycznie parsuje, co jest bardzo wygodne
Dla bardziej podstawowych zastosowań polecam, Scannerponieważ jest łatwiejszy w użyciu i łatwiej pisać programy. Oto szybki przykład tworzenia Scanner. Podam wyczerpujący przykład poniżej, jak korzystać zScanner
Scanner scanner =newScanner(System.in);// create scannerSystem.out.print("Enter your name");// prompt user
name = scanner.next();// get user input
import java.util.InputMismatchException;// import the exception catching classimport java.util.Scanner;// import the scanner classpublicclassRunScanner{// main method which will run your programpublicstaticvoid 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 =newScanner(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 inputstry{// 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 inputSystem.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}}
Uwaga: Inne klasy, takie jak Consolei, DataInputStreamsą również wykonalnymi alternatywami.
Consolema kilka zaawansowanych funkcji, takich jak umiejętność odczytywania haseł, jednak nie jest dostępna we wszystkich IDE (takich jak Eclipse). Dzieje się tak dlatego, że Eclipse uruchamia aplikację jako proces w tle, a nie proces najwyższego poziomu z konsolą systemową. Oto link do przydatnego przykładu implementacji Consoleklasy.
DataInputStreamsłuży przede wszystkim do odczytu danych wejściowych jako pierwotnego typu danych, z podstawowego strumienia wejściowego, w sposób niezależny od maszyny. DataInputStreamjest zwykle używany do odczytu danych binarnych. Zapewnia również dogodne metody odczytu niektórych typów danych. Na przykład ma metodę odczytu ciągu UTF, który może zawierać dowolną liczbę wierszy.
Jest to jednak klasa bardziej skomplikowana i trudniejsza do wdrożenia, dlatego nie jest zalecana dla początkujących. Oto link do przydatnego przykładu implementacji DataInputStream.
Zamierzam zadzwonić do zwycięzcy tutaj. Przeważnie całkiem świetna odpowiedź, chociaż chciałbym, aby była głębsza, kiedy chciałbym użyć DataInputStream- tam opis brzmi identycznie jak przypadek użycia Scanner: wczytywanie danych do prymitywów. Ponadto, jeśli ktoś jest na etapie, w którym nie wie, jak uzyskać wkład użytkownika, najprawdopodobniej nie rozumie również, dlaczego niektóre części standardowej biblioteki nie byłyby dostępne w niektórych IDE. Z pewnością tak jest w moim przypadku - dlaczego jest Consoleniedostępny?
Doskonały. To jest dokładnie odpowiedź na to pytanie od samego początku. Gdyby tylko był jakiś sposób, mógłbym dostać się na szczyt.
tymczasowego
Cóż, każdy, kto chce przewinąć w dół, otrzyma dobrą odpowiedź i powoli pójdzie w górę :)
JFreeman
1
Dzięki. Szczegółowa odpowiedź informacyjna. Dodanie try-with-resourcepoprawiłoby to.
Sourabh
8
Tutaj program prosi użytkownika o wprowadzenie numeru. Następnie program drukuje cyfry liczby i sumę cyfr.
import java.util.Scanner;publicclassPrintNumber{publicstaticvoid main(String[] args){Scanner scan =newScanner(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);}}
InputStreamReader i BufferedReader to klasy w pakiecie java.io.
Dane są odbierane w formie bajtów z klawiatury przez System.in, który jest obiektem InputStream.
Następnie InputStreamReader odczytuje bajty i dekoduje je na znaki.
Następnie obiekt BufferedReader odczytuje tekst ze strumienia wprowadzania znaków, buforując znaki, aby zapewnić efektywny odczyt znaków, tablic i linii.
System.in(w pierwszym wierszu kodu) będzie zawierał kapitał Sna nazwę klasy.
KNU
5
Wejście skanera = nowy skaner (System.in);
int liczba całkowita = input.nextInt ();
String string = input.next ();
long longInteger = input.nextLong ();
import java.util.Scanner;classDaytwo{publicstaticvoid main(String[] args){System.out.println("HelloWorld");Scanner reader =newScanner(System.in);System.out.println("Enter the number ");int n = reader.nextInt();System.out.println("You entered "+ n);}}
Oto bardziej rozwinięta wersja zaakceptowanej odpowiedzi, która zaspokaja dwie typowe potrzeby:
Gromadzenie danych wejściowych użytkownika do momentu wprowadzenia wartości wyjścia
Postępowanie z niepoprawnymi wartościami wejściowymi (w tym przykładzie wartościami innymi niż całkowite)
Kod
package inputTest;import java.util.Scanner;import java.util.InputMismatchException;publicclassInputTest{publicstaticvoid main(String args[]){Scanner reader =newScanner(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 inputSystem.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();}}
Przykład
Please enter integers.Type0 to exit.Enter an integer:12The number entered was:12Enter an integer:-56The number entered was:-56Enter an integer:4.2Invalid input type (must be an integer)Enter an integer: but i hate integers
Invalid input type (must be an integer)Enter an integer:3The number entered was:3Enter an integer:0Exiting...
Zauważ, że bez tego nextLine(), złe dane wejściowe będą wielokrotnie wyzwalać ten sam wyjątek w nieskończonej pętli. Możesz użyć next()zamiast tego w zależności od okoliczności, ale wiedz, że dane wejściowe takie this has spaceswygenerują wiele wyjątków.
Jest to prosty kod korzystający z System.in.read()funkcji. Ten kod zapisuje tylko to, co zostało wpisane. Możesz pozbyć się pętli while, jeśli chcesz tylko raz wprowadzić dane, a jeśli chcesz, możesz przechowywać odpowiedzi w tablicy znaków.
package main;import java.io.IOException;publicclassRoot{publicstaticvoid main(String[] args){newRoot();}publicRoot(){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;}}}}
import java.util.Scanner;publicclassMain{publicstaticvoid main(String[] args){System.out.println("Welcome to the best program in the world! ");while(true){System.out.print("Enter a query: ");Scanner scan =newScanner(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...");}}}}
Możesz uzyskać dane wejściowe od użytkownika za pomocą Scanner. Można użyć poprawnego sprawdzania poprawności danych wejściowych przy użyciu odpowiednich metod dla różnych typów danych, takich jak next()for Stringlub nextInt()for Integer.
import java.util.Scanner;Scanner scanner =newScanner(System.in);//reads the input until it reaches the spaceSystem.out.println("Enter a string: ");String str = scanner.next();System.out.println("str = "+ str);//reads until the end of lineString aLine = scanner.nextLine();//reads the integerSystem.out.println("Enter an integer num: ");int num = scanner.nextInt();System.out.println("num = "+ num);//reads the double valueSystem.out.println("Enter a double: ");double aDouble = scanner.nextDouble();System.out.println("double = "+ aDouble);//reads the float value, long value, boolean value, byte and shortdouble aFloat = scanner.nextFloat();long aLong = scanner.nextLong();boolean aBoolean = scanner.nextBoolean();byte aByte = scanner.nextByte();short aShort = scanner.nextShort();
scanner.close();
Najprostszym sposobem na uzyskanie danych wejściowych od użytkownika byłoby użycie skanera. Oto przykład, w jaki sposób powinien być używany:
import java.util.Scanner;publicclass main {publicstaticvoid main(String[]args){Scanner sc=newScanner(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();
Wiersz kodu import java.util.Scanner;informuje program, że programista będzie używał danych wejściowych użytkownika w kodzie. Jak mówi, importuje narzędzie skanera. Scanner sc=new Scanner(System.in);nakazuje programowi uruchomienie danych wejściowych użytkownika. Po wykonaniu tej czynności musisz utworzyć ciąg lub liczbę całkowitą bez wartości, a następnie umieścić je w wierszu a=sc.nextInt();lub a=sc.nextLine();. Daje to zmiennym wartość danych wejściowych użytkownika. Następnie możesz użyć go w kodzie. Mam nadzieję że to pomoże.
class ex1 {publicstaticvoid 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 1020
c =30
Wprowadzanie klawiatury za pomocą skanera jest możliwe, jak napisali inni. Ale w tych bardzo graficznych czasach tworzenie kalkulatora bez graficznego interfejsu użytkownika (GUI) nie ma sensu.
W nowoczesnej Javie oznacza to używanie narzędzia JavaFX typu przeciągnij i upuść, takiego jak Scene Builder, do stworzenia interfejsu graficznego przypominającego konsolę kalkulatora. Należy pamiętać, że korzystanie z programu Scene Builder jest intuicyjnie łatwe i nie wymaga żadnych dodatkowych umiejętności obsługi języka Java w programach obsługi zdarzeń, które są już dostępne.
Do wprowadzania danych użytkownik powinien mieć szeroki TextField na górze konsoli GUI.
W tym miejscu użytkownik wprowadza liczby, na których chce wykonywać funkcje. Pod TextField, macie tablicę przycisków funkcyjnych wykonujących podstawowe funkcje (tj. Dodawanie / odejmowanie / mnożenie / dzielenie i pamięć / przywołanie / kasowanie). Po wygaśnięciu GUI możesz dodać odniesienia do kontrolera, które łączą każdą funkcję przycisku z implementacją Java, np. Wywołanie metody w klasie kontrolera projektu.
Ten film jest nieco stary, ale wciąż pokazuje, jak łatwy w użyciu jest Konstruktor scen.
Ta odpowiedź została odrzucona - bez podania przyczyny. Dla mnie jest to jedyny użyteczny sposób na uzyskanie wkładu użytkownika do aplikacji Java.
Trunk
Jest to bardzo przydatne i nie rozumiem, dlaczego zostało to odrzucone. Jednak obecne odpowiedzi i oświadczenie o nagrodach sugerują, że szukają odpowiedzi dla przyszłych użytkowników, którzy chcą uzyskać wkład za pośrednictwem konsoli.
JFreeman
Po prostu nie widzę żadnego użytkownika Javy - z wyjątkiem tych, którzy utknęli w kodzie napisanym w starych wersjach Javy - mających jakikolwiek użytek z klawiatury skanera. Ostatnim razem odpowiadam na wpis związany z nagrodą. . .
Bagażnik
Rozumiem całkowicie twoją skargę. Osobiście uważam, że twoja odpowiedź jest bardzo przydatna, więc nie rozumiem, dlaczego została odrzucona. Jednak wielokrotnie pisałem programy, które nie mają GUI i dlatego uważam, że odpowiedni kod dla Scannerbardzo dobrze jest mieć dostępny.
JFreeman
Jeśli OP powiedział, że jest to proces o niskim nakładzie (osadzony?) Z minimalnym We / Wy ekranu lub bez niego, wystarczy - skaner jest tym, czego potrzebują. Ale nie stwierdzili nic takiego. OP zasadniczo poprosił nas o zaakceptowanie tego, że to wyrażenie „dane wejściowe użytkownika” sugeruje przede wszystkim wprowadzanie danych z klawiatury, lub też zaprosił nas do interpretacji tego wyrażenia dla siebie. . .
Odpowiedzi:
Możesz użyć dowolnej z następujących opcji w zależności od wymagań.
Scanner
klasaBufferedReader
iInputStreamReader
zajęciaDataInputStream
klasareadLine
Metoda zDataInputStream
klasy została zaniechana . Aby uzyskać wartość ciągu, należy użyć poprzedniego rozwiązania z BufferedReaderConsole
klasaNajwyraźniej ta metoda nie działa dobrze w niektórych IDE.
źródło
DataInputStream
służy do odczytu danych binarnych. KorzystaniereadInt
naSystem.in
nie nie analizować liczbę całkowitą od danych znakowych, to zamiast reinterpretacji wartości Unicode i powrót nonsens. ZobaczDataInput#readInt
szczegóły (DataInputStream
narzędziaDataInput
).Jednym z najprostszych sposobów jest użycie
Scanner
obiektu w następujący sposób:źródło
Scanner reader1 = new Scanner(System.in);
?Możesz użyć klasy Scanner lub Console
źródło
Możesz uzyskać wkład użytkownika za pomocą
BufferedReader
.Będzie przechowywać
String
wartość w,accStr
więc musisz parsować ją doint
użyciaInteger.parseInt
.źródło
Oto jak uzyskać dane z klawiatury:
źródło
Możesz stworzyć prosty program, który zapyta o nazwę użytkownika i wydrukuje dane wejściowe odpowiedzi.
Możesz też poprosić użytkownika o wprowadzenie dwóch liczb, abyś mógł je dodawać, pomnażać, odejmować lub dzielić i drukować odpowiedzi dla danych wprowadzonych przez użytkownika, tak jak w przypadku kalkulatora.
Więc potrzebujesz klasy skanera. Musisz
import java.util.Scanner;
i w kodzie musisz użyćDane wejściowe to nazwa zmiennej.
Zobacz, jak różni:
input.next();
,i = input.nextInt();
,d = input.nextDouble();
Według String, int i double różnią się w ten sam sposób dla reszty. Nie zapomnij instrukcji importu u góry kodu.
Zobacz także wpis na blogu „Klasa skanera i uzyskiwanie danych wejściowych użytkownika” .
źródło
Dwie najlepsze opcje to
BufferedReader
iScanner
.Najczęściej stosowaną metodą jest
Scanner
i ja osobiście wolę ją ze względu na jej prostotę i łatwą implementację, a także jej potężne narzędzie do parsowania tekstu w prymitywne dane.Zalety korzystania ze skanera
Scanner
klasyZalety BufferedInputStream
Scanner
między wątkami )Ogólnie każda metoda wprowadzania ma inne cele.
Jeśli wprowadzasz dużą ilość danych,
BufferedReader
może być dla Ciebie lepiejJeśli wpisujesz wiele liczb
Scanner
, automatycznie parsuje, co jest bardzo wygodneDla bardziej podstawowych zastosowań polecam,
Scanner
ponieważ jest łatwiejszy w użyciu i łatwiej pisać programy. Oto szybki przykład tworzeniaScanner
. Podam wyczerpujący przykład poniżej, jak korzystać zScanner
(Aby uzyskać więcej informacji na temat
BufferedReader
Apostolskiej , jak korzystać z BufferedReader i zobaczyć Czytanie wierszy Chars )java.util.Scanner
Uwaga: Inne klasy, takie jak
Console
i,DataInputStream
są również wykonalnymi alternatywami.Console
ma kilka zaawansowanych funkcji, takich jak umiejętność odczytywania haseł, jednak nie jest dostępna we wszystkich IDE (takich jak Eclipse). Dzieje się tak dlatego, że Eclipse uruchamia aplikację jako proces w tle, a nie proces najwyższego poziomu z konsolą systemową. Oto link do przydatnego przykładu implementacjiConsole
klasy.DataInputStream
służy przede wszystkim do odczytu danych wejściowych jako pierwotnego typu danych, z podstawowego strumienia wejściowego, w sposób niezależny od maszyny.DataInputStream
jest zwykle używany do odczytu danych binarnych. Zapewnia również dogodne metody odczytu niektórych typów danych. Na przykład ma metodę odczytu ciągu UTF, który może zawierać dowolną liczbę wierszy.Jest to jednak klasa bardziej skomplikowana i trudniejsza do wdrożenia, dlatego nie jest zalecana dla początkujących. Oto link do przydatnego przykładu implementacji
DataInputStream
.źródło
DataInputStream
- tam opis brzmi identycznie jak przypadek użyciaScanner
: wczytywanie danych do prymitywów. Ponadto, jeśli ktoś jest na etapie, w którym nie wie, jak uzyskać wkład użytkownika, najprawdopodobniej nie rozumie również, dlaczego niektóre części standardowej biblioteki nie byłyby dostępne w niektórych IDE. Z pewnością tak jest w moim przypadku - dlaczego jestConsole
niedostępny?try-with-resource
poprawiłoby to.Tutaj program prosi użytkownika o wprowadzenie numeru. Następnie program drukuje cyfry liczby i sumę cyfr.
źródło
Aby odczytać wiersz lub ciąg, możesz użyć
BufferedReader
obiektu połączonego zInputStreamReader
jednym w następujący sposób:źródło
Oto twój program od pytania za pomocą
java.util.Scanner
:źródło
Scanner
obiektów; jeden byłby wystarczający.Użyj
System
klasy, aby uzyskać dane wejściowe.http://fresh2refresh.com/java-tutorial/java-input-output/ :
źródło
System.in
(w pierwszym wierszu kodu) będzie zawierał kapitałS
na nazwę klasy.źródło
Tylko jeden dodatkowy szczegół. Jeśli nie chcesz ryzykować wycieku pamięci / zasobów, powinieneś zamknąć strumień skanera po zakończeniu:
Pamiętaj, że java 1.7 i nowsze wersje wychwytują to jako ostrzeżenie dotyczące kompilacji (nie pytaj, skąd to wiem :-)
źródło
źródło
źródło
Oto bardziej rozwinięta wersja zaakceptowanej odpowiedzi, która zaspokaja dwie typowe potrzeby:
Kod
Przykład
Zauważ, że bez tego
nextLine()
, złe dane wejściowe będą wielokrotnie wyzwalać ten sam wyjątek w nieskończonej pętli. Możesz użyćnext()
zamiast tego w zależności od okoliczności, ale wiedz, że dane wejściowe takiethis has spaces
wygenerują wiele wyjątków.źródło
Dodaj
throws IOException
obokmain()
, a następnieźródło
Wejście w Javę jest bardzo proste, wszystko co musisz zrobić, to:
źródło
źródło
Możesz uzyskać takie dane wejściowe od użytkownika za pomocą BufferedReader:
Tak je stosujesz
Kiedy więc użytkownik wpisze swoje imię w konsoli, „String name” zapisze te informacje.
Jeśli jest to liczba, którą chcesz zapisać, kod będzie wyglądał następująco:
Hop to pomaga!
źródło
Może być coś takiego ...
źródło
Jest to prosty kod korzystający z
System.in.read()
funkcji. Ten kod zapisuje tylko to, co zostało wpisane. Możesz pozbyć się pętli while, jeśli chcesz tylko raz wprowadzić dane, a jeśli chcesz, możesz przechowywać odpowiedzi w tablicy znaków.źródło
Lubię następujące:
i na przykład zrobiłbym:
źródło
źródło
Możesz uzyskać dane wejściowe od użytkownika za pomocą
Scanner
. Można użyć poprawnego sprawdzania poprawności danych wejściowych przy użyciu odpowiednich metod dla różnych typów danych, takich jaknext()
forString
lubnextInt()
forInteger
.źródło
Najprostszym sposobem na uzyskanie danych wejściowych od użytkownika byłoby użycie skanera. Oto przykład, w jaki sposób powinien być używany:
Wiersz kodu
import java.util.Scanner;
informuje program, że programista będzie używał danych wejściowych użytkownika w kodzie. Jak mówi, importuje narzędzie skanera.Scanner sc=new Scanner(System.in);
nakazuje programowi uruchomienie danych wejściowych użytkownika. Po wykonaniu tej czynności musisz utworzyć ciąg lub liczbę całkowitą bez wartości, a następnie umieścić je w wierszua=sc.nextInt();
luba=sc.nextLine();
. Daje to zmiennym wartość danych wejściowych użytkownika. Następnie możesz użyć go w kodzie. Mam nadzieję że to pomoże.źródło
źródło
źródło
args
bez wcześniejszego sprawdzania długości tej tablicy: downvote.java ex1
Wprowadzanie klawiatury za pomocą skanera jest możliwe, jak napisali inni. Ale w tych bardzo graficznych czasach tworzenie kalkulatora bez graficznego interfejsu użytkownika (GUI) nie ma sensu.
W nowoczesnej Javie oznacza to używanie narzędzia JavaFX typu przeciągnij i upuść, takiego jak Scene Builder, do stworzenia interfejsu graficznego przypominającego konsolę kalkulatora. Należy pamiętać, że korzystanie z programu Scene Builder jest intuicyjnie łatwe i nie wymaga żadnych dodatkowych umiejętności obsługi języka Java w programach obsługi zdarzeń, które są już dostępne.
Do wprowadzania danych użytkownik powinien mieć szeroki TextField na górze konsoli GUI.
W tym miejscu użytkownik wprowadza liczby, na których chce wykonywać funkcje. Pod TextField, macie tablicę przycisków funkcyjnych wykonujących podstawowe funkcje (tj. Dodawanie / odejmowanie / mnożenie / dzielenie i pamięć / przywołanie / kasowanie). Po wygaśnięciu GUI możesz dodać odniesienia do kontrolera, które łączą każdą funkcję przycisku z implementacją Java, np. Wywołanie metody w klasie kontrolera projektu.
Ten film jest nieco stary, ale wciąż pokazuje, jak łatwy w użyciu jest Konstruktor scen.
źródło
Scanner
bardzo dobrze jest mieć dostępny.