Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Wenn die Varianten weniger Code brauchen, weil bei Scanner muss man java.util.Scanner immer einfügen und dazu noch bei jeder Variabel noch ein Scanner.nextDatentyp() hinzufügen. Wenn die Varianten weniger Code braucht, dann ist sie meiner Meinung nach besser.Was ist denn deine Bedingung, damit du eine andere Variante einfacher als Scanner bezeichnen würdest? Findest du Scanner kompliziert?
Du kannst theoretisch direkt vom InputStream System.in lesen, dann musst du aber mit bytes umgehen können 😎
Kannst du mir kurz BufferedReader erklären und wieso es besser sein soll als Scanner?BufferedReader ist robuster als Scanner. Ich verwende immer den BR. Aber Neulingen wird nur noch Scanner beigebracht, eigentlich schade.
// imports für testBufferedReader()
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
// imports für testScanner()
import java.util.Scanner;
public class TestIO {
public static void main(String[] args) {
TestIO testIO = new TestIO();
System.out.println("BufferdReader");
testIO.testBufferedReader();
System.out.println("--------------------------------------------------------------------");
System.out.println("Scanner");
testIO.testScanner();
}
void testBufferedReader() {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Bitte geb Sie zwei Zahlen getrennt durch Leerzeichen ein");
String text = bufferedReader.readLine();
String[] tokens = text.split(" ");
if (tokens.length < 2) {
System.err.println("Sie sollten doch mindestens zwei Zahlen eingeben");
return;
}
int zahl1 = 0;
int zahl2 = 0;
try {
zahl1 = Integer.parseInt(tokens[0]);
} catch (NumberFormatException e) {
System.err.println("Die erste Eingabe war keine Zahl");
return;
}
try {
zahl2 = Integer.parseInt(tokens[1]);
} catch (NumberFormatException e) {
System.err.println("Die zweite Eingabe war keine Zahl");
return;
}
System.out.println("Ihre Eingabezahlen waren " + zahl1 + " und " + zahl2);
} catch (IOException e) {
System.err.println("IOEcxeption in testBufferedReader() aufgetreten");
return;
}
}
void testScanner() {
// Hier werden falsche Eingaben nicht abgefangen!
// Wenn man das noch machen will, wird es auch hier mühselig.
Scanner scanner = new Scanner(System.in);
System.out.println("Bitte geben Sie zwei Zahlen getrennt durch Leerzeichen ein");
int zahl1 = scanner.nextInt();
int zahl2 = scanner.nextInt();
System.out.println("Ihre Eingabezahlen waren " + zahl1 + " und " + zahl2);
}
}
Nein,Hier wurde künstlich einer der wenigen Anwendungsfälle konstruiert, bei dem die Verwendung von BR weniger vorteilhaft dargestellt werden soll. Aber gut, jeder wie er will.
if(tokens.length < 2), dass keine Exceptions (ArrayIndexOutOfBoundsException) auftreten können.Ich habe auch keine Ahnung, wie man mit dem Scanner Falscheingaben abfängt (natürlich gibt esvoid testScanner() {
// Hier werden falsche Eingaben nicht abgefangen!
// Wenn man das noch machen will, wird es auch hier mühselig.
hasNextInt(), aber was tue ich, wenn dies "false" zurückliefert.).