Eingabe nicht möglich...

0LUMIN4T0R

Mitglied
Hallo zusammen,
ich habe folgendes problem:
Ich bin dabei ein programm zu schreiben, welches dem benutzer ermöglichen soll einen stundenplan einzugeben und ihn dann auch wieder ausgeben zu lassen. Das funktioniert auch überall, außer am montag in der ersten Stunde.
Java:
for(int i = 0; i < s; i++){
                for(int i1 = 0; i1 < z; i1++){
                    System.out.println((i+1) + ". Tag, " + (i1+1) + ". Stunde:");
                    stundenplan[i1][i] = sc.nextLine();
                }  
            }
sc ist hierbei der Scanner
stundenplan das array
s die anzahl am tagen die der stundenplan enthalten soll
z die anzahl der stunden

Er gibt mir den Text für die 1. Stunde zwar aus, geht dann aber ohne eine eingabe zu fordern direkt zur zweiten stunde. Von da an läuft dann alles normal.
Ich hoffe jemand kann mir helfen.
 

InfectedBytes

Top Contributor
erstmal würde ich dir empfehlen sprechendere Variablennamen zu verwenden, s und z sind denkbar schlechte Namen^^
Ansonsten vermute ich mal, dass das Problem vor dem geposteten Code liegt.
Ich schätze mal du hast dort irgendwie ein nextInt oder nextDouble oder ähnliches. Diese lesen zwar eine Zahl ein, entfernen aber nicht das \n aus dem Eingabepuffer. Das erste nextLine betrachtet dieses \n dann direkt als komplette Zeile.
 

0LUMIN4T0R

Mitglied
Das mit den Variabeln mach ich ok. Aber ewrstmal hier der geamte Code:

Java:
import java.util.Scanner;

public class Main {
    public static String[][] stundenplan;
    public static int s, z;
    public static void menu(){
        int MenuEingabe;
      
        System.out.println("Menü:");
        System.out.println("-----------------------");
        System.out.println("1. Stundenplan anzeigen");
        System.out.println("2. Stunden eingeben");
        System.out.println("3. Programm schließen");
      
        Scanner sc = new Scanner(System.in);
        System.out.println("\nGeben sie 1, 2 oder 3 ein!");
        MenuEingabe = sc.nextInt();
        switch(MenuEingabe){
        case 1:
            ausgabe();
            break;
        case 2:
            eingabe();
            break;
        default:
            System.out.println("Das Programm wird beendet...");
            System.exit(0);
        }
    }
    public static void eingabe(){
        String neu;
      
        Scanner sc = new Scanner(System.in);
        System.out.println("Wollen sie einen neuen Stundenplan erstellen?");
        neu = sc.nextLine();
        while(!(neu.equalsIgnoreCase("ja") || neu.equalsIgnoreCase("nein"))){
            System.err.println("Geben Sie entwedere ja oder nein ein!");
            neu = sc.nextLine();
        }
        if(neu.equalsIgnoreCase("ja")){
            System.out.println("Wie viele Tage soll ihr Stundenplan beinhalten?");
            s = sc.nextInt();
            while(s > 7 || s < 1){
                System.err.println("Bitte geben sie eine Zahl zwischen 1 und 7 ein!");
                s = sc.nextInt();
            }
            System.out.println("Wie viele Stunden haben sie maximal?");
            z = sc.nextInt();
            stundenplan = new String[z][s];
            for(int i = 0; i < s; i++){
                for(int i1 = 0; i1 < z; i1++){
                    System.out.println((i+1) + ". Tag, " + (i1+1) + ". Stunde:");
//hier tritt das Problem nur beim ersten mal auf
                    stundenplan[i1][i] = sc.nextLine();
                }  
            }
            menu();
        }else if(neu.equalsIgnoreCase("nein")){
            int tag;
            int stunde;
            String an = "";
            System.out.println("Welche Stunde wollen sie ändern?");
            System.out.println("Wie vielter Tag?");
            tag = sc.nextInt();
            while(tag > s || tag < 1){
                System.out.println("Dieser Tag ist in dem Stundenplan nicht enthalten!");
                tag = sc.nextInt();
            }
            System.out.println("Wie vielte Stunde?");
            stunde = sc.nextInt();
            while(stunde > z || stunde < 1){
                System.out.println("Diese Stunde ist in dem Stundenplan nicht enthalten!");
                stunde = sc.nextInt();
            }
            System.out.println("Momentan ist in dieser Stunde das Fach " + stundenplan[stunde-1][tag-1] + "!");
            System.out.println("Welches Fach soll eingesetzt werden?");
//hier tritt das Problem auf
            stundenplan[stunde-1][tag-1] = sc.nextLine();
            System.out.println("Die Stunde wurde erfolgreich verändert! Wollen sie nun den ganzen Stundenplan betrachten?");
            an = sc.nextLine();
            while(!(an.equalsIgnoreCase("ja") || an.equalsIgnoreCase("nein"))){
                System.err.println("Geben Sie entwedere ja oder nein ein!");
                an = sc.nextLine();
            }
            if(an.equalsIgnoreCase("ja")){
                ausgabe();
            }else if(an.equalsIgnoreCase("nein")){
                menu();
            }
        }
              
    }
    public static void ausgabe(){
        switch(s){
        case 1:
            System.out.println("\tMo\t");
            break;
        case 2:
            System.out.println("\tMo\tDi\t");
            break;
        case 3:
            System.out.println("\tMo\tDi\tMi\t");
            break;
        case 4:
            System.out.println("\tMo\tDi\tMi\tDo\t");
            break;
        case 5:
            System.out.println("\tMo\tDi\tMi\tDo\tFr\t");
            break;
        case 6:
            System.out.println("\tMo\tDi\tMi\tDo\tFr\tSa\t");
            break;
        case 7:
            System.out.println("\tMo\tDi\tMi\tDo\tFr\tSa\tSo\t");
            break;
        }
        for(int i1 = 0; i1 < z; i1++){
            System.out.print((i1+1) + ".\t");
            for(int i = 0; i < s; i++){
                System.out.print(stundenplan[i1][i] + "\t");
            }
            System.out.println("\n");
        }
        menu();
    }
    public static void main(String[] args){
        menu();
    }
}
Gleiches Problem tritt auch an einer anderen Stelle auf.
 
Zuletzt bearbeitet:

InfectedBytes

Top Contributor
ist halt genauso wie ich vermutet habe. Es werden immer die nextLines übersprungen, die nach einem nextInt kommen.
Die einfachste Lösung (wenn auch unschöne Lösung) ist es eben nach jedem nextInt direkt eine nextLine zu machen, welches das übrige \n verschluckt:
Java:
// ...
int n = scanner.nextInt();
scanner.nextLine(); // dient nur zum entfernen des übrig gebliebenen \n
// ...
 

0LUMIN4T0R

Mitglied
Und schon habe ich ein neues Problemo_O
Java:
    public static void save(File file)
    {
        try {
       
            BufferedWriter writer = new BufferedWriter(new FileWriter(file));
                       for(int i = 0; i <= (s-1); i++){
                           for(int i1 = 0; i1<= (z-1); i1++){
                                   writer.write(stundenplan[i1][i]);
                                   writer.newLine();
                           }
                           writer.write("-");
                           writer.newLine();
                       }
                    
            writer.close();
        }
        catch (IOException e) {
            e.printStackTrace();
        }
Java:
FileReader fread;
            try {
                fread = new FileReader("Stundenplan.txt");
                BufferedReader in = new BufferedReader(fread);
                int i1 = 0;
                int i = 0;
                String line;
                for(i = 0;(line = in.readLine()) != null; i++){
                    if(line != "-"){
//folgenede ist Zeile 181
                    stundenplan[i][i1] = line;
                }else{
                i1++;
                }
                }
                z = i;
                s = i1;
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
Ich bekomme eine NullPointerExeption in Zeile 181.
 

InfectedBytes

Top Contributor
tja, dann würde ich mal sagen ist wohl deine Stundenplan null...^^
Bevor du dein Array benutzt, musst du es halt erst einmal erzeugen.

Außerdem vergleichst du Strings, das funktioniert so aber nicht. Strings werden mit equals verglichen:
Java:
if(!line.equals("-")) ...
 

0LUMIN4T0R

Mitglied
Ah jetzt weiß ich was du meinst. Das Problem ist halt, dass ich danach erst weiß wie lang das array sein soll, weil dies ja über die anzahl der "-" bestimmt werden soll.
 

InfectedBytes

Top Contributor
kannst ja einfach breite und höhe der tabelle in die ersten beiden zeilen der datei schreiben.
Liest dann die beiden Zeilen aus, erzeugst dein Array und machst dann mit dem rest weiter
 

0LUMIN4T0R

Mitglied
Ich hoffe mal das ist jetzt das letzte Problem:confused: Nach sieben Ausgaben kriege ich dann eine ArrayIndexOutOfBoundsException (z ist 6).Was das bedeutet verstehe ich ja, aber iuch kann es mir einfach nicht erklären warum. Er hat offenbar ein Problem mit der 1. Stunde am zweiten Tag.
Java:
    public static void lesen(File file){
     
         
            FileReader fread;
            try {
                fread = new FileReader(file);
                BufferedReader in = new BufferedReader(fread);
                int i1 = 0;
                int i = 0;
                String line;
                String t;
                t = in.readLine();
                s = Integer.valueOf(t);
                t = in.readLine();
                z = Integer.valueOf(t);
                erstellt = true;
                stundenplan = new String[z][s];
                for(i = 0;(line = in.readLine()) != null; i++){
                    if(line != "-"){
                        System.out.println("test");
                        stundenplan[i][i1] = line;
                    }else{
                        i1++;
                    }
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                erstellt = false;
            } catch (IOException e) {
                e.printStackTrace();
            }
         
      
    }
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Eingabe mit Char vergleichen klappt nicht! Allgemeine Java-Themen 2
S Antlr Grammatik übersetzt ohne Fehler, dennoch wird Zahl nicht als Eingabe erkannt Allgemeine Java-Themen 4
G Problem mit Quellcode, Eingabe wird nicht angezeigt --HELP-- Allgemeine Java-Themen 2
kodela Eingabe für TextArray bedingt sperren Allgemeine Java-Themen 3
M Kein Scanner Fehler durch falsche EIngabe Allgemeine Java-Themen 4
N Eingabe wird immer als "false" ausgegeben Allgemeine Java-Themen 6
N String Array Eingabe Allgemeine Java-Themen 6
W Java Telegram Bot - Eingabe durch User Allgemeine Java-Themen 2
M Keine weitere Eingabe in der Main möglich. Eventueller Ansatz über while. Allgemeine Java-Themen 8
G Eingabe auftrennen Allgemeine Java-Themen 3
K OOP Daten addieren sich bei GUI-Eingabe Allgemeine Java-Themen 10
D Flasche Eingabe erkennen Allgemeine Java-Themen 4
Sin137 Interface Eingabe wird doppelt angezeigt Allgemeine Java-Themen 2
C Cmd Eingabe als Administrator Allgemeine Java-Themen 4
J Anzahl der Zeichen bei Eingabe begrenzen Allgemeine Java-Themen 5
M Eingabe von Arrays geht über gewünschte Anzahl hinaus Allgemeine Java-Themen 2
S Erste Schritte Arrayliste alphabetisch sortieren mit Eingabe Allgemeine Java-Themen 9
Cayton Bruchrechner stürzt bei eingabe negativer Zahlen ab Allgemeine Java-Themen 4
M Befehl in Runtime ausführen der Eingabe benötigt Allgemeine Java-Themen 3
Z Taschenrechner größere Eingabe Allgemeine Java-Themen 3
R Programm soll warten bis eine Passwort eingabe gemacht wurde. Allgemeine Java-Themen 6
M Tastatur eingabe über Buttons Allgemeine Java-Themen 15
D zeichenerkennung für umlaute bei eingabe Allgemeine Java-Themen 4
M Eingabe Überprüfen Allgemeine Java-Themen 3
D Batch-Datei Eingabe Allgemeine Java-Themen 2
N IP-Adresse Eingabe abfragen? Allgemeine Java-Themen 4
S Listener Implentierung bei Eingabe in Textfeld Allgemeine Java-Themen 2
P MS Dos Eingabe Allgemeine Java-Themen 7
M JTable: Anzahl Zeichen bei Eingabe Allgemeine Java-Themen 2
G Überprüfung der Eingabe ob Typ korrekt Allgemeine Java-Themen 4
B Programm soll auf die Eingabe vom Mouselistener warten. Allgemeine Java-Themen 19
M Programmablauf nach letzter eingabe erst fortsetzten Allgemeine Java-Themen 2
G eingabe Allgemeine Java-Themen 4
K Warten auf die Eingabe aus Fenster.... Allgemeine Java-Themen 2
B TextField ohne Eingabe Allgemeine Java-Themen 7
H Frage zu Wildcard Eingabe in Java! Allgemeine Java-Themen 5
R Eingabe eines Textfeldes mit Inhalt einer Datei vergleichen Allgemeine Java-Themen 4
L javaformular auf website (eingabe per email zusenden) Allgemeine Java-Themen 3
B Java Eingabe HELP ( eclipse ) Allgemeine Java-Themen 4
F JTextField Eingabe automatisch bestaetigen Allgemeine Java-Themen 17
F Unsichtbare Eingabe Allgemeine Java-Themen 10
C Kettenelemente mit Bezeichner durch eingabe? Allgemeine Java-Themen 4
M Suche , bereits während der eingabe ?? Allgemeine Java-Themen 4
Zrebna Wieso sollte man Null-Prüfungen nicht mit Optional-Objekten nutzen? Allgemeine Java-Themen 13
kodela Textfeld nicht rechteckig Allgemeine Java-Themen 10
G Doppelklick auf Javaprogramm klapt nicht Allgemeine Java-Themen 1
W Timer terminiert nicht Allgemeine Java-Themen 5
D Linux, Java-Version wird nicht erkannt bzw. welche Einstellung fehlt noch? Allgemeine Java-Themen 19
W Überflüssige Deklaration vermeiden...war da nicht mal was? Allgemeine Java-Themen 3
N lwjgl kann textureSampler nicht finden Allgemeine Java-Themen 4
P Fehler: Hauptklasse Main konnte nicht gefunden oder geladen werden Ursache: java.lang.ClassNotFoundException: Main Allgemeine Java-Themen 24
S Java Programm lässt sich vom USB-Stick starten, aber nicht von HDD Allgemeine Java-Themen 16
T .Jar kann man nicht ausführen Allgemeine Java-Themen 18
P JDK nicht installiert in Net Object Fusion Allgemeine Java-Themen 7
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
N Regex schlägt nicht an Allgemeine Java-Themen 10
Y Wieso krieg ich die Unit Tests nicht hin Allgemeine Java-Themen 55
D Erste Schritte Mp3 Datei kann nicht von der Festplatte geöffnet werden - mit ChatGPT erstellt Allgemeine Java-Themen 7
G Popup wird nicht sichtbar Allgemeine Java-Themen 9
8u3631984 Funktions Parameter mit Lombok "NonNull" annotieren wird in Jacococ Testcoverage nicht herausgefiltert Allgemeine Java-Themen 3
kodela String kann nicht zu Pfad konvertiert werden Allgemeine Java-Themen 16
M Apache Proxy Weiterleitung auf Tomcat funktioniert nicht wie gewünscht Allgemeine Java-Themen 1
Momo16 Brauche Hilfe - Java Projekt kann nicht erstellt werden Allgemeine Java-Themen 12
OnDemand ApacheCommon FTP Client zuckt nicht Allgemeine Java-Themen 3
T JavaPoet - (noch) nicht existente Typen Allgemeine Java-Themen 2
E Es ist nicht möglich, eine Batch-Anweisung auszuführen. Allgemeine Java-Themen 9
C Was passt hier nicht bei der Calendar-Class Allgemeine Java-Themen 2
T Testing JUnit5: try ... catch arbeitet nicht sauber Allgemeine Java-Themen 6
W While Schleife funktioniert nicht ganz Allgemeine Java-Themen 4
OnDemand MemoryLeak nicht zu finden Allgemeine Java-Themen 26
torresbig Website login Problem - Jsoup, wie bisher, klappt nicht! Allgemeine Java-Themen 31
H do-while Schleife funktioniert nicht wie ich es möchte Allgemeine Java-Themen 7
ERlK JDA Code funktioniert nicht? Allgemeine Java-Themen 4
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
OnDemand XML desializing Attribute bringt nicht erwartetes Ergebnis Allgemeine Java-Themen 16
T ImageIcon wird nicht angezeigt Allgemeine Java-Themen 6
N JAVA-Code mit Grafikfenster zeichnet in Windows, aber nicht Mac. Allgemeine Java-Themen 4
stormyark TikTakToe funktioniert nicht Allgemeine Java-Themen 10
N Warum wird die For Schleife nicht betreten Allgemeine Java-Themen 4
Tiago1234 Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 38
T Remove bei ArrayList funktioniert nicht Allgemeine Java-Themen 2
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
I "Neues" Lizenzmodell Oracle - JRE nicht mehr zur Redistribution freigegeben? Allgemeine Java-Themen 16
J c Programm läuft nicht in compilierter Version des Java Projektes Allgemeine Java-Themen 7
A code wird nicht ausgeführt Allgemeine Java-Themen 3
Blender3D Alte Beiträge nicht mehr vorhanden Allgemeine Java-Themen 6
M Warum hat Java dieses und jenes nicht... Allgemeine Java-Themen 8
W Bilder werden in App mit Jar-Datei nicht angezeigt Allgemeine Java-Themen 15
Micha43 Applet *.jar läuft nicht auf dem Mac Allgemeine Java-Themen 8
M Warum bekommen ich den Result nicht ? Allgemeine Java-Themen 17
Kiki01 Häufigster Buchstabe lässt sich nicht ermitteln Allgemeine Java-Themen 30
OnDemand RegEx /compilebekomme nicht die erwarteten Werte Allgemeine Java-Themen 9
HerrBolte Seltsamer Fehler nur in der Windows- und nicht in der Java-Console O_O Allgemeine Java-Themen 16
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
N nicht einsehbarer Fehler im code, kann nicht mehr übersetzten Allgemeine Java-Themen 51
P Karate API Test läuft nicht durch . initializationError Allgemeine Java-Themen 21
N nicht static und auch nicht new Allgemeine Java-Themen 3
Z macOS java konnte nicht entfernt werden xpc verbindungsfehler Allgemeine Java-Themen 4
T Schaltfläche wird nicht gefunden Allgemeine Java-Themen 4
boschl2000 Springerproblem-Implementierung funktioniert nicht richtig Allgemeine Java-Themen 1

Ähnliche Java Themen

Neue Themen


Oben