Fehlermeldung beim Versuch, einen String einzulesen

Tebert47

Mitglied
Hallo,

ich habe mich hier aufgrund folgenden Problems angemeldet. Ich habe eine Programm erstellt, welches dem Nutzer die Möglichkeit gibt, über den Aufruf einer Methode ein Array zu erstellen. Anschließend soll der Nutzer die Wahl haben, ob durch den Aufruf einer weiteren Methode entweder untersucht wird, ob das eingegebene Array sortiert ist, oder der Index des Maximums ausgegeben wird. Hierfür soll mit einer if-Abfrage überprüft werden, ob das eingegebene Wort mit dem entsprechenden String übereinstimmt. Hierbei kommt es jedoch zu einer Fehlermeldung.

Java:
import java.util.Scanner;

public class Array {

    public static void main(String[] args) {
       
        int[] ar = arrayEinlesen();
        Scanner scan = new Scanner(System.in);
        System.out.println("Um zu überprüfen, ob das Array sortiert ist, geben Sie \"sortiert\" ein");
        System.out.println("Um das Maximum zu bestimmen, geben Sie \"Maximum\" ein");
       
        String auswahl = scan.nextLine();
        if(auswahl.equals("sortiert"))
            istsortiert(ar);
        if(auswahl.equals("Maximum"))
            maximum(ar);
        scan.close();
       
    }

    public static boolean istsortiert(int[] array) {
        boolean sortiert = true;
        for (int i = 0; i < array.length - 1 && sortiert == true; i++) {
            if (array[i] > array[i + 1])
                sortiert = false;
        }
        if (sortiert == false) {
            sortiert = true;
            for (int i = 0; i < array.length - 1 && sortiert == true; i++) {
                if (array[i] < array[i + 1])
                    sortiert = false;
            }

        }
        return sortiert;
    }

    public static int maximum(int[] array) {
        int max = array[0];
        int index = 0;
        for (int i = 0; i < array.length; i++) {
            if (max < array[i])
                max = array[i];

        }
        for (int i = 0; i < array.length; i++) {
            if (max == array[i])
                index = i;
        }
        return index;
    }

    public static int[] arrayEinlesen() {
        System.out.println("Geben Sie die Arraylänge ein:");
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int[] array = new int[n];
        System.out.println("Geben Sie die Zahlen des Arrays ein");
        for (int i = 0; i < array.length; i++) {
            array[i]=scan.nextInt();
        }
        scan.close();
        return array;
       
    }
}

Folgende Fehlermeldung wird angezeigt.
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.base/java.util.Scanner.nextLine(Scanner.java:1651)
at Array.main(Array.java:12)

Danke im Voraus für Eure Hilfe!
 

httpdigest

Top Contributor
Das Problem ist, dass Scanner.close() auch den darunterliegenden Eingabestrom (System.in) schließt. Du erzeugst insgesamt zwei Scanner. Einen in der main() Methode und einen in arrayEinlesen(). Beide Scanner bekommen eine Referenz auf denselben Eingabestrom System.in und das Schließen des Scanners innerhalb von arrayEinlesen() führt dazu, dass der Scanner in main() nichts mehr lesen kann. Am besten solltest du nur einen einzigen Scanner erzeugen und diesen z.B. als Parameter an die Methode arrayEinlesen() weitergeben. Und dann in arrayEinlesen() kein scan.close() mehr aufrufen, sondern nur in main().
 

Tebert47

Mitglied
Ich habe das anfangs so umgesetzt, wie Du mir empfohlen hast. Die Fehlermeldung verschwand hieraufhin auch, allerdings war es mir danach nicht mehr möglich, einen String einzugeben. Ich habe das Problem anschließend gelöst, nachdem ich eines neues Scanner-Objekt mit einem anderen Namen erstellt habe.
Code:
public static void main(String[] args) {
        
        
        Scanner scan = new Scanner(System.in);
        Scanner scan2 = new Scanner(System.in);
        int[] ar = arrayEinlesen(scan);
        System.out.println("Um zu überprüfen, ob das Array sortiert ist, geben Sie \"sortiert\" ein");
        System.out.println("Um das Maximum zu bestimmen, geben Sie \"Maximum\" ein");
        
        String auswahl = scan2.nextLine();
        if(auswahl.equals("sortiert"))
            System.out.println(istsortiert(ar));
        if(auswahl.equals("Maximum"))
            System.out.println(maximum(ar));
        scan.close();
        scan2.close();
        
    }
Das hat jetzt zwar funktioniert, allerdings verstehe ich nicht, warum ich es nicht bei einem Scanner-Objekt hätte belassen können, scan.close() erfolgt ja erst am Ende der main-Funktion.
 

httpdigest

Top Contributor
Hier ist jetzt das Problem, dass der letzte Aufruf von Scanner.nextInt() innerhalb von arrayEinlesen() nicht mehr den Zeilenumbruch mit einliest, den du generierst, wenn du die letzte Zahl in die Konsole schreibst und ENTER drückst. Das heißt, der nächste Aufruf von Scanner.nextLine() liefert eine Leerzeile und dein Programm wird beendet.
Abhilfe kannst du dir dadurch schaffen, dass du ein separates scan.nextLine() am Ende der arrayEinlesen() Methode einbaust:
Java:
public static int[] arrayEinlesen(Scanner scan) {
  System.out.println("Geben Sie die Arraylänge ein:");
  int n = scan.nextInt();
  int[] array = new int[n];
  System.out.println("Geben Sie die Zahlen des Arrays ein");
  for (int i = 0; i < array.length; i++) {
    array[i] = scan.nextInt();
  }
  scan.nextLine(); // <- Leerzeile lesen
  return array;
}
Dann kannst du auch wieder nur einen einzigen Scanner nutzen.

Übrigens: Das nächste Problem wird dann sein, dass du dich wunderst, warum nichts ausgegeben wird, wenn du "sortiert" oder "Maximum" als letzte Eingabe bestätigst. Das liegt daran, dass du das Ergebnis der Aufrufe istsortiert() bzw. maximum() nirgends ausgibst.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T Fehlermeldung beim Starten von FlashTool Java Basics - Anfänger-Themen 27
N Fehlermeldung beim ausführen des Programmes.. Java Basics - Anfänger-Themen 3
A Fehlermeldung beim aufruf der main Methode Java Basics - Anfänger-Themen 17
D Fehlermeldung beim Ausführen eines Java Programms Java Basics - Anfänger-Themen 4
S Class File Editor gibt beim Start der Programms die Fehlermeldung Source not found aus Java Basics - Anfänger-Themen 1
K Fehlermeldung beim kompilieren Java Basics - Anfänger-Themen 8
I Applet Fehlermeldung beim Starten Java Basics - Anfänger-Themen 2
J Fehlermeldung beim Einbinden des HttpClients Java Basics - Anfänger-Themen 12
K Fehlermeldung beim programm vom prof? Java Basics - Anfänger-Themen 14
S Fehlermeldung beim Aufruf einer Methode Java Basics - Anfänger-Themen 3
S Fehlermeldung beim Kompilieren Java Basics - Anfänger-Themen 12
B Problem beim 1. Programm: Fehlermeldung Java Basics - Anfänger-Themen 4
W Fehlermeldung beim start des Tomcat Java Basics - Anfänger-Themen 4
T Fehlermeldung beim Klonen eines JPanels Java Basics - Anfänger-Themen 8
G Fehlermeldung beim Konstruktor Java Basics - Anfänger-Themen 4
H Fehlermeldung beim löschen eines Elementes aus einer JList Java Basics - Anfänger-Themen 4
G Fehlermeldung beim ausführen Java Basics - Anfänger-Themen 7
Ronny123 Erste Schritte Fehlermeldung Java Basics - Anfänger-Themen 1
F Fehlermeldung in Eclipse Java Basics - Anfänger-Themen 13
AllBlack Fehlermeldung Java Basics - Anfänger-Themen 19
Finn_lol Fehlermeldung bei Schleife mit Array Java Basics - Anfänger-Themen 4
N Ich kriege ganze zeit die Fehlermeldung "Inhalt der Zwischenablage kann nicht in die ausgewählten Elemente eingefügt werden" hat jemand eine Lösung? Java Basics - Anfänger-Themen 6
P Java Selenium . Parameterized.Parameters erzeugt eine Fehlermeldung Java Basics - Anfänger-Themen 14
J Fehlermeldung unverständlich für Jakarta Java Basics - Anfänger-Themen 17
Ostkreuz Fehlermeldung Java Basics - Anfänger-Themen 1
_so_far_away_ Fehlermeldung "Index 2 out of bounds for length 2" Java Basics - Anfänger-Themen 7
W Texteingabe - Bedeutung Fehlermeldung, Lösung? Java Basics - Anfänger-Themen 18
krgewb Fehlermeldung in web.xml Java Basics - Anfänger-Themen 4
W Warum diese Fehlermeldung? Java Basics - Anfänger-Themen 12
nbergmann Unverständliche Fehlermeldung Java Basics - Anfänger-Themen 56
E fehlermeldung bei richtigen login daten Java Basics - Anfänger-Themen 7
J Fehlermeldung im Checkstyle Java Basics - Anfänger-Themen 11
S Fehlermeldung Java Basics - Anfänger-Themen 7
B Compiler-Fehler Fehlermeldung Exception in thread, falsche Eingabewert Java Basics - Anfänger-Themen 2
EchtKeineAhnungManchmal Hallo :) ich bekomme es nicht hin eine Fehlermeldung auszugeben über die GUI Java Basics - Anfänger-Themen 3
C Fehlermeldung Array zuweisen und printen Java Basics - Anfänger-Themen 22
J Fehlermeldung Java Basics - Anfänger-Themen 22
J Fehlermeldung: A JNI error Java Basics - Anfänger-Themen 3
R Fehlermeldung aber WO liegt der Fehler? Java Basics - Anfänger-Themen 7
JavaClara Fehlermeldung bei split-Methode Java Basics - Anfänger-Themen 12
F Fehlermeldung java.lang.NullPointerException Java Basics - Anfänger-Themen 4
C Fehlermeldung InOut. Java Basics - Anfänger-Themen 7
B Methoden if-statement error, FX, Fehlermeldung Java Basics - Anfänger-Themen 6
A Fehlermeldung Java Basics - Anfänger-Themen 5
H Comparator Fehlermeldung Java Basics - Anfänger-Themen 5
D Folgende Fehlermeldung bei der Installation von JAVAFX Java Basics - Anfänger-Themen 1
M Java heap space Fehlermeldung beheben Java Basics - Anfänger-Themen 3
J Fehlermeldung unklar. non-static variable player0 cannot be referenced from a static context Java Basics - Anfänger-Themen 4
S Bitte Hilfe zu Fehlermeldung am Handy Java Basics - Anfänger-Themen 2
H fehlermeldung Java Basics - Anfänger-Themen 447
H fehlermeldung Java Basics - Anfänger-Themen 9
C Fehlermeldung mit Intger. Java Basics - Anfänger-Themen 3
A Fehlermeldung Java Basics - Anfänger-Themen 3
D Wie kann man eine solche Fehlermeldung abfangen Java Basics - Anfänger-Themen 4
H Fehlermeldung bei der Ausführung eines Compilierten PRGs Java Basics - Anfänger-Themen 9
x-tshainge Fehlermeldung Java Basics - Anfänger-Themen 2
M Erste Schritte NetBeans Fehlermeldung Java Basics - Anfänger-Themen 2
D Fehlermeldung obwohl Variablen bereits deklariert sind? Java Basics - Anfänger-Themen 14
N Fehlermeldung bei Methode Java Basics - Anfänger-Themen 12
I String index out of range Fehlermeldung Java Basics - Anfänger-Themen 4
I Fehlermeldung bei Darstellung von Arrays Java Basics - Anfänger-Themen 2
S Variablen JLabel backImagePanel Fehlermeldung Java Basics - Anfänger-Themen 3
A checkstyle Fehlermeldung Java Basics - Anfänger-Themen 1
G Compiler-Fehler Fehlermeldung Java Basics - Anfänger-Themen 3
Pr0m3theus Fehlermeldung ArrayList add Java Basics - Anfänger-Themen 12
Arabicabohne Fehlermeldung bei Eclipse Java Basics - Anfänger-Themen 23
lBlKha0s Fehlermeldung : class interface or enum expected Java Basics - Anfänger-Themen 9
TheMenox Fehlermeldung / Arrays, Enhanced For Loops Java Basics - Anfänger-Themen 16
D Compiler-Fehler Anfänger Fehlermeldung Java Basics - Anfänger-Themen 3
Henri Fehlermeldung Java Basics - Anfänger-Themen 2
K Erste Schritte Fehlermeldung Java Basics - Anfänger-Themen 2
I Fehlermeldung: Java does not contain a main type Java Basics - Anfänger-Themen 1
J Fehlermeldung : cannot invoke char(at) int on the primitive type int --- Anfänger Java Basics - Anfänger-Themen 5
J Bug? Seltsame Fehlermeldung Java Basics - Anfänger-Themen 7
J Fehlermeldung else without if Java Basics - Anfänger-Themen 5
J while(nst == 0) gibt Fehlermeldung Java Basics - Anfänger-Themen 4
L Fehlermeldung Java Basics - Anfänger-Themen 6
D Erste Schritte Fehlermeldung "Syntax error on token ";", { expected after this token" Java Basics - Anfänger-Themen 13
J Launcher Fehlermeldung Java Basics - Anfänger-Themen 0
A Fehlermeldung Unklar, google hilft auch nicht weiter Java Basics - Anfänger-Themen 2
H Compiler-Fehler Fehlermeldung Kompilier Java Basics - Anfänger-Themen 4
A Fehlermeldung Unklar. Java Basics - Anfänger-Themen 1
A Code läuft nicht, Fehlermeldung Exception in thread "main" java.lang.Error: Unresolved compilation " Java Basics - Anfänger-Themen 11
D Integer Fehlermeldung exception Java Basics - Anfänger-Themen 4
H Kein Zugriff auf das Element einer JList möglich: Fehlermeldung Java Basics - Anfänger-Themen 2
S Vererbung Fehlermeldung: the hierarchy of the type "class name" is inconsistent Java Basics - Anfänger-Themen 10
D Fehlermeldung "com.element.JavaUpload.Manager" Java Basics - Anfänger-Themen 1
S Fehlermeldung bei format methode Java Basics - Anfänger-Themen 1
A Compiler-Fehler Fehlermeldung auf Mac Java Basics - Anfänger-Themen 3
K JDBC - Wie ist Fehlermeldung zu interpretieren Java Basics - Anfänger-Themen 3
O Methoden Fehlermeldung(Illegal start of expression) bei 4-Gewinnt-Spiel Java Basics - Anfänger-Themen 5
N Fehlermeldung nicht nachvollziehbar Java Basics - Anfänger-Themen 5
C addActionListener(this) - Fehlermeldung Java Basics - Anfänger-Themen 8
C Array List mit String vergleichen und Fehlermeldung ausgeben Java Basics - Anfänger-Themen 6
X Einfach verkettete Liste, keine Fehlermeldung Programm friert ein Java Basics - Anfänger-Themen 4
G Variablen Warum bekomme ich da eine Fehlermeldung? Java Basics - Anfänger-Themen 3
C GUI - SWT - Button-Fehlermeldung Java Basics - Anfänger-Themen 5
F Input/Output IOTools Fehlermeldung: cannot be resolved Java Basics - Anfänger-Themen 16
K Erste Schritte Datei gelöscht - nun Fehlermeldung Java Basics - Anfänger-Themen 2
S Fehlermeldung Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben