Lädt...

Die getippte Zeile in Java

Du willst, dass der Bildschirm ein Wort zeigt, das du tippst, nachdem das Programm angefangen hat, ein Wort, das nicht in der Datei steht. Auf der vorigen Seite stand das Wort zwischen Anführungszeichen auf der Speicherzeile, also hieß ein anderer Bildschirm, Mint.java zu ändern. Auf dieser Seite enthält die Datei leaf überhaupt nicht. Sie erzeugt einen Namen, plant, und wartet dann. Du tippst leaf und drückst Enter. Die schreibende Zeile benutzt den bloßen Namen, und das Programm schreibt leaf. Du installierst Java nicht noch einmal. Du setzt keine Notiz dazu, und du lernst keinen zweiten Weg, eine Zeile zu beenden. Du weißt schon, dass ein Name Buchstaben halten kann und dass println diese Buchstaben schreibt. Die neue Arbeit ist, diesen Namen aus der Zeile zu füllen, die du tippst.

Die Datei wartet auf eine getippte Zeile

Öffne Mint.java. Der Dateiname bleibt Mint.java, weil public class Mint weiter der Name der Datei ist. Diese Seite benennt die Datei nicht um und ändert public class Mint nicht. Die erste Zeile der Datei, über public class Mint, ist import java.util.Scanner;. Diese Zeile erlaubt der Datei, Scanner zu benutzen. Sie ist keine schreibende Zeile. Scanner ist kein Buchstabe für den Bildschirm. Das Semikolon beendet die Importzeile. Lass darunter eine leere Zeile, dann dieselbe public class Mint, die du schon hast. Diese Datei hat weiter keine package-Zeile. Der Import ist die erste Zeile, keine Zeile in main.

In main erzeugt die erste neue Zeile das Lesezeug: Scanner reader = new Scanner(System.in);. Scanner sagt, was für ein Ding reader ist. reader ist der Name, und er fängt mit einem kleinen r an. Das Zeichen = speichert das Lesezeug in diesem Namen. new Scanner(System.in) erzeugt es und hängt es an System.in. System.in ist der Ort, von dem die getippten Buchstaben gelesen werden. System.out, das du auf der schreibenden Zeile schon benutzt, ist der Bildschirm. Die zwei sind nicht dasselbe. Das Semikolon beendet diese Zeile. Diese Zeile schreibt den Bildschirm nicht, und sie wartet nicht darauf, dass du tippst. Sie erzeugt nur reader.

Die nächste Zeile füllt den Namen, den du von der vorigen Seite kennst: String plant = reader.nextLine();. String heißt weiter, dass dieser Name Buchstaben hält. plant fängt weiter mit einem kleinen p an. Das Zeichen = speichert weiter Buchstaben in diesem Namen. Neu ist die rechte Seite. reader.nextLine() hat keine Anführungszeichen. Auf dieser Zeile steht kein leaf. Die Zeile verlangt von reader eine getippte Zeile. Das Programm wartet dort, bis du Enter drückst. Wenn du Enter drückst, speichert nextLine die Buchstaben, die du vor diesem Enter getippt hast. Es speichert die Enter-Taste selbst nicht. Dann endet die Zeile am Semikolon. Speichern ist weiter nicht Schreiben. Das Programm hat seine eigene Zeile noch nicht geschrieben.

Die schreibende Zeile bleibt der bloße Name, in derselben Form wie in der Datei, die du auf der vorigen Seite behalten hast: System.out.println(plant);. Keine Anführungszeichen. Java liest den Namen plant, schreibt die Buchstaben, die dieser Name hält, und beendet die Zeile. Diese Buchstaben sind das, was nextLine gerade gespeichert hat. Wenn du leaf getippt hast, schreibt das Programm leaf. Wenn du stem getippt hast, schreibt das Programm stem. Die Datei hat sich zwischen den zwei Läufen nicht geändert. Speichere die Datei.

Die Datei, die du behältst

Speichere das als Mint.java. Das ist die Datei, die diese Seite behält. Das Wort, das du tippen wirst, steht nicht in der Datei. Suche in der Datei nach den Buchstaben l, e, a und f. Sie sind nicht da. Das Lesezeug heißt reader. Die gespeicherte Zeile heißt plant. Die schreibende Zeile benutzt plant und enthält keine Anführungszeichen.

die Datei, die du behältst

java
import java.util.Scanner;

public class Mint {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String plant = reader.nextLine();
        System.out.println(plant);
    }
}

Lies die Datei von oben und entscheide, was den Bildschirm erreichen kann. import java.util.Scanner; erlaubt der Datei nur, Scanner zu benutzen. public class Mint benennt die Datei. public static void main(String[] args) ist die Stelle, an der Java anfängt. Keines dieser Wörter ist ein Buchstabe für den Bildschirm. Das Wort String in der main-Zeile ist nicht das String, das plant erzeugt. Scanner reader = new Scanner(System.in); erzeugt das Lesezeug reader. Es schreibt nichts. String plant = reader.nextLine(); speichert eine getippte Zeile in plant. Es schreibt von sich aus nichts. System.out.println(plant); ist die einzige schreibende Zeile. Sie schreibt die gespeicherten Buchstaben und beendet die Zeile. Der Name plant wird nicht geschrieben. Der Name reader wird nicht geschrieben. System wird nicht geschrieben. Das Semikolon wird nicht geschrieben.

Was du tippst und was das Programm schreibt

Im Ordner, der diese Mint.java enthält, tippe javac Mint.java. Wenn die Datei in Ordnung ist, schreibt dieser Befehl keine Zeile. Eine Importzeile und ein reader bringen javac nicht dazu, eine Zeile zu schreiben, und sie bringen ihn nicht zum Scheitern. Dann tippe java Mint. Tippe nach java nicht .java. Dieselben zwei Befehle tippst du unter Windows und unter macOS. Diese Seite zitiert nicht das Zeichen, das die Shell vor dem Befehl zeigt. Diese Zeichen unterscheiden sich, und sie sind nicht die Zeile des Programms.

Nach java Mint wartet das Programm bei reader.nextLine(). Es ist nicht fertig, und es hat leaf nicht geschrieben, weil du ihm noch keine Zeile gegeben hast. Der Cursor sitzt auf einer frischen Zeile. Tippe die Buchstaben l, e, a und f. Das Terminal zeigt diese Buchstaben, während du die Tasten drückst. Dieses Zeigen ist das Terminal, das deine Tasten wiederholt. Es ist nicht System.out.println. Dann drücke Enter.

Enter beendet das Warten. nextLine speichert das Wort leaf in plant und speichert Enter nicht. println schreibt dann leaf und beendet die Zeile. Du siehst leaf, und darunter noch einmal leaf. Das erste leaf sind die Tasten, die das Terminal gezeigt hat. Das zweite leaf ist das Programm. Die Zeile des Programms hat keine Anführungszeichen. Vier Buchstaben, dann endet die Zeile. Das Programm ist nach dieser schreibenden Zeile fertig. Wenn du nur die Zeile des Programms beurteilen willst, nimm die Zeile, die erscheint, nachdem du Enter gedrückt hast.

Wenn die Zeile des Programms plant ist, hat die schreibende Zeile Anführungszeichen um plant. Die Datei, die du behältst, hat sie nicht. Wenn die Zeile des Programms mint ist, ist die schreibende Zeile weiter System.out.println("mint");, oder die Datei hält weiter ein Wort in Anführungszeichen aus einer früheren Seite. Wenn java Mint sofort leaf schreibt und nie wartet, speichert die Datei weiter ein Wort in Anführungszeichen, etwa String plant = "leaf";, und benutzt nextLine nicht. Suche nach Anführungszeichen um leaf. Die Datei, die du behältst, hat keine. Du installierst Java nicht neu, nur weil der Bildschirm das falsche Wort zeigt.

Große Buchstaben werden so kopiert, wie du sie tippst. Wenn du Leaf mit einem großen L tippst und Enter drückst, ist die Zeile des Programms Leaf. Die Datei enthält diese Buchstaben weiter nicht. Ein leeres Enter ist auch eine echte Zeile. Drücke Enter, ohne Buchstaben zu tippen. nextLine speichert keine Buchstaben in plant. println schreibt eine Zeile ohne Buchstaben. Das Programm ist gelaufen. Das Warten hat aufgehört, weil du Enter gedrückt hast. Die Datei, die du behältst, ist die, die du mit leaf probierst, vier kleine Buchstaben.

Ein Leerzeichen bleibt in der Zeile

nextLine liest bis Enter, nicht bis zu einem Leerzeichen. Tippe leaf, dann ein Leerzeichen, dann stem, dann Enter. Die Buchstaben, die in plant gespeichert werden, sind leaf, ein Leerzeichen und stem. System.out.println(plant) schreibt leaf stem. Das Leerzeichen ist ein gespeichertes Zeichen, so wie auf der vorigen Seite ein Leerzeichen in Anführungszeichen mitgespeichert wurde. Diese Seite schneidet die Zeile nicht am Leerzeichen ab. Die Datei, die du behältst, liest weiter eine Zeile. Wenn du das Leerzeichen auf dem Bildschirm willst, änderst du nur, was du tippst, nicht die Datei.

Zwei getippte Zeilen, zwei Enter

Ein reader kann eine zweite Zeile nehmen. Unter der ersten schreibenden Zeile speichere eine neue Zeile im selben Namen und schreib den Namen dann noch einmal. Die neue Speicherzeile ist plant = reader.nextLine();. Sie fängt nicht mit String an. plant gibt es schon, also ersetzt diese Zeile nur die Buchstaben, die der Name hält. Die nächste schreibende Zeile ist wieder System.out.println(plant);. Das Programm wartet jetzt zweimal. Jedes nextLine wartet auf sein eigenes Enter.

Das ist die zweite Datei. Sie ist nicht die Datei, die du behältst. Die Datei, die du behältst, wartet einmal und schreibt einmal. Speichere diese zweite Datei als Mint.java, wenn du zwei getippte Zeilen sehen willst, und setze danach das einzelne nextLine und das einzelne println zurück.

zwei getippte Zeilen

java
import java.util.Scanner;

public class Mint {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String plant = reader.nextLine();
        System.out.println(plant);
        plant = reader.nextLine();
        System.out.println(plant);
    }
}

Tippe javac Mint.java. Die Datei ist in Ordnung, also schreibt javac keine Zeile. Die zweite Speicherzeile darf String weglassen, und dieses Weglassen bringt javac nicht zum Scheitern. Dann tippe java Mint. Das Programm wartet. Tippe leaf und drücke Enter. Das Terminal zeigt leaf, und das Programm schreibt leaf darunter. Das Programm wartet wieder. Es ist nicht fertig. Tippe stem und drücke Enter. Das Terminal zeigt stem, und das Programm schreibt stem darunter. Die Zeilen des Programms sind leaf, dann stem. Die Buchstaben, die das Terminal von den Tasten gezeigt hat, sitzen über jeder dieser Zeilen. Wenn beide Programmzeilen leaf sagen, ist das zweite nextLine nicht gelaufen, oder du hast beide Male leaf getippt. Wenn das Programm stem schreibt, bevor du eine zweite Zeile getippt hast, sitzt das zweite println nicht unter einem zweiten nextLine. Der Bildschirm folgt der Reihenfolge der Zeilen in der Datei, und jedes Warten folgt dem nextLine, das Enter noch nicht erhalten hat.

Schreib String nicht ein zweites Mal für denselben Namen. String plant = reader.nextLine();, unter einer Zeile, die plant schon erzeugt hat, ist ein anderer Fehler. Diese Zeile versucht, plant noch einmal zu erzeugen. javac schreibt einen Fehler und bleibt nicht still. Du brauchst nicht den genauen Wortlaut dieses Fehlers. Die nützliche Tatsache ist, dass javac eine Zeile geschrieben hat, also tippst du noch nicht java Mint. Lösche das zweite String und lass plant = reader.nextLine(); stehen. Der Name wird einmal erzeugt. Spätere Zeilen ändern nur die Buchstaben, die er hält. In der Datei, die du behältst, gibt es überhaupt kein zweites nextLine. Nachdem du leaf und dann stem gesehen hast, setze die Datei mit der einen Zeile zurück.

Die Importzeile steht über public class

Die Datei kennt Scanner erst, wenn die Importzeile da ist. Wenn du import java.util.Scanner; löschst und den Rest der Datei lässt, die du behältst, schreibt javac einen Fehler. Es bleibt nicht still. Es gibt keinen Bildschirm zu lesen, weil du java Mint nicht tippst, während javac einen Fehler schreibt. Du brauchst nicht die genauen Wörter des Fehlers. Die Reparatur ist, import java.util.Scanner; wieder als erste Zeile über public class Mint zu setzen, mit dem Semikolon. Speichere, tippe javac Mint.java noch einmal, und warte, bis javac keine Zeile schreibt.

Diese dritte Datei hat den Import nicht. Sie ist nicht die Datei, die du behältst. Speichere sie nur, bis javac den Fehler schreibt, und setze die Importzeile dann zurück.

die Importzeile fehlt

java
public class Mint {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        String plant = reader.nextLine();
        System.out.println(plant);
    }
}

Die Importzeile scheitert auch, wenn du sie in main setzt, unter die öffnende Klammer, oder wenn du sie unter public class setzt. Java liest einen Import über public class, nicht als Schritt in main. Setze sie auf die erste Zeile zurück. Ein fehlendes Semikolon auf dieser Zeile ist dieselbe Art von Fehler: javac schreibt einen Fehler, und du startest java Mint nicht. Die Datei, die du behältst, hat das Semikolon.

System.in ist der einzige Ort, an den diese Seite das Lesezeug hängt. Scanner reader = new Scanner(System.out); verlangt ein Lesezeug auf dem Bildschirm. System.out ist das, wohin println schreibt. Es ist nicht der Ort, von dem getippte Buchstaben gelesen werden. javac schreibt einen Fehler. Es bleibt nicht still. Tippe nicht java Mint. Ändere auf dieser einen Zeile System.out in System.in. Die schreibende Zeile behält System.out, weil die schreibende Zeile der Bildschirm ist. Die reader-Zeile behält System.in, weil die reader-Zeile die Tastatur ist. Die zwei zu vertauschen ist der Fehler.

Diese vierte Datei hängt das Lesezeug an den Bildschirm. Sie ist nicht die Datei, die du behältst. Speichere sie nur, bis javac den Fehler schreibt, und ändere dann out in in.

das Lesezeug hängt am Bildschirm

java
public class Mint {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.out);
        String plant = reader.nextLine();
        System.out.println(plant);
    }
}

reader muss zuerst da sein

Java liest die Datei von oben. Die Zeile, die reader erzeugt, muss über der Zeile stehen, die reader benutzt. Wenn String plant = reader.nextLine(); zuerst steht und erst danach Scanner reader = new Scanner(System.in);, benutzt die Speicherzeile den Namen reader, bevor reader existiert. javac schreibt einen Fehler. Es bleibt nicht still. Das ist dieselbe Reihenfolgenregel wie auf der vorigen Seite, als plant vor String plant benutzt wurde. Die Reparatur ist, die Scanner-Zeile über die nextLine-Zeile zu setzen. Ein Name kann nicht in einer früheren Zeile benutzt werden als in der Zeile, die ihn erzeugt.

Diese fünfte Datei hat die kaputte Reihenfolge. Sie ist nicht die Datei, die du behältst. Speichere sie nur, bis javac den Fehler schreibt, und setze die Scanner-Zeile dann wieder über nextLine. Die Importzeile bleibt nötig in einer Datei, die du wirklich startest. Diese kaputte Datei behält den Import, damit der einzige neue Fehler die Reihenfolge ist.

reader wird benutzt, bevor es existiert

java
import java.util.Scanner;

public class Mint {
    public static void main(String[] args) {
        String plant = reader.nextLine();
        Scanner reader = new Scanner(System.in);
        System.out.println(plant);
    }
}

Tippe javac Mint.java. javac schreibt einen Fehler. Tippe nicht java Mint. Setze Scanner reader = new Scanner(System.in); über String plant = reader.nextLine();. Speichere. Tippe javac Mint.java noch einmal. Jetzt schreibt javac keine Zeile. Dann wartet java Mint. Tippe leaf, drücke Enter, und das Programm schreibt leaf.

Anführungszeichen auf der schreibenden Zeile bedeuten weiter dasselbe wie auf der vorigen Seite. Nach einem echten nextLine, wenn die schreibende Zeile System.out.println("plant"); ist, kannst du leaf tippen und Enter drücken, und die Zeile des Programms ist trotzdem plant. Die Zeichen markieren die Buchstaben p, l, a, n und t. Java sucht den Namen nicht. Die Zeile, die du getippt hast, wurde in plant gespeichert und nie geschrieben. Die Reparatur ist der bloße Name, System.out.println(plant);. Die Datei, die du behältst, hat diesen bloßen Namen schon. Setze auch auf der Speicherzeile keine Anführungszeichen um leaf. String plant = "leaf"; würde leaf aus der Datei selbst speichern und nie warten. Diese Seite lässt nextLine auf der Speicherzeile und lässt die schreibende Zeile bloß.

Du kannst jetzt Mint.java starten, warten, eine Zeile tippen, Enter drücken und sehen, dass das Programm diese Zeile schreibt. import java.util.Scanner; steht über public class. Scanner reader = new Scanner(System.in); erzeugt das Lesezeug an der Tastatur. String plant = reader.nextLine(); speichert die Zeile, ohne Enter. System.out.println(plant); schreibt sie und beendet die Zeile. Ein späteres plant = reader.nextLine(); wartet auf ein zweites Enter. Der Import, System.in und die Tatsache, dass reader vor dem ersten Gebrauch existiert, halten javac still. Die nächste Seite lässt die Tastatur. Sie sieht sich Arten von Werten an, die ein Name halten kann, wenn du diese Werte in die Datei schreibst, und sie fängt bei Zahlen an, nicht bei einer Zeile, die du tippst.

Der Bildschirm ist die Zeile, die du getippt hast

Die Datei, die du behältst, enthält leaf nicht. Du tippst leaf nach java Mint und drückst Enter. Das Terminal zeigt dieses Tippen. Das Programm schreibt dann leaf in der nächsten Zeile. Ein Leerzeichen, das du tippst, gehört zu dieser Zeile. Ein zweites nextLine ist ein zweites Enter, und es steht nicht in der Datei, die du behältst.

🧠 Testen Sie Ihr Wissen

Bereit zum Start

Testen Sie Ihr Wissen

Fordern Sie sich mit diesem interaktiven Quiz heraus und sehen Sie, wie gut Sie das Thema verstehen

❓
6
Fragen
🎯
70%
Zum Bestehen
♾️
∞
Zeit
🔄
∞
Versuche

📝 Anweisungen

  • Lesen Sie jede Frage sorgfältig
  • Wählen Sie die beste Antwort für jede Frage
  • Sie können das Quiz so oft wiederholen, wie Sie möchten
  • Ihr Fortschritt wird oben angezeigt