Leere Eingabe in einem array

HausAmSee

Mitglied
Guten Tag
Ich habe eine Aufgabe vor mir, in der ich in einem array, das mit beliebigen Zahlen mithilfe vom Scanner eingelesen wird, die groeßte Zahl zu finden. Bei einem leeren Feld soll "die Eingabe ist leer" ausgegeben werden.

Java:
import java.util.Scanner;

public class groessteZahlArray {
  public static void main(String[] args) {

    Scanner sc = new Scanner(System.in);
    int index;
    int anzahl;
    int[] feld;
    int maximalwert;
  
  
    anzahl = sc.nextInt();
    feld = new int[anzahl];
 

    index = 0;
    while ( index < anzahl )
    {
      feld[index] = sc.nextInt();
      index = index + 1;
    }

    maximalwert = feld[0];
    index = 0;
 
    for(index = 0;index < anzahl; index++)
        while(feld[index] > maximalwert)  {
         maximalwert = feld[index];
         } System.out.println("Der größte Wert ist: " + maximalwert);
      
          if (feld.length == 0) {
              System.out.println("Die Eingabe ist leer.");
     }
  }
}

Bei positiven wie negativen Zahlen klappt das alles. Aber wenn die Eingabe 0 ist, kommt ein Fehler:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Uebung03_A2.main(Uebung03_A2.java:27).
Bin seit vielen Stunden auf der Suche nach der Ursache und habe vieles versucht in der letzten if-Bedingung oder oben in der for-Schleife (genauer dem Index) zu ändern, ohne Erfolg.
Könnt ihr mich unterstützen?
 

Joose

Top Contributor
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at Uebung03_A2.main(Uebung03_A2.java:27).
Bitte auch angeben um welche Zeile in deinem Code es sich dabei handelt ;)
Ich nehme mal an um folgende maximalwert = feld[0];. Das Problem ist wenn dein Array eine Länge von 0 hat kannst du auch nicht auf Index 0 zugreifen, dazu brauchst du ein Array mit min der Länge 1 ;)

So wie DerWissende schon sagt, müsstest du vorher prüfen ob dein Array "leer" ist.

Ansonsten sind mir noch Kleinigkeiten augefallen:
Java:
    maximalwert = feld[0];
    index = 0;

    for(index = 0;index < anzahl; index++)
        while(feld[index] > maximalwert)  {
         maximalwert = feld[index];
         } System.out.println("Der größte Wert ist: " + maximalwert);
    
          if (feld.length == 0) {
              System.out.println("Die Eingabe ist leer.");
     }
Du kannst dir ein index = 0 sparen, entweder setzt den Wert vor der Schleife zurück oder eben im Schleifenkopf ;)
Anstatt die Variable maximalWert mit dem 1.Wert aus dem Array zu initialisieren, verwende stattdessen https://docs.oracle.com/javase/7/docs/api/java/lang/Integer.html#MIN_VALUE
Überlege dir auch ob du deine while-Schleife wirklich benötigst bzw. ob sie so korrekt ist ... mach am besten einen Schreibtischtest dazu.
Der Code kompiliert zwar so, aber verwende trotzdem { } für deine for-Schleife und achte auf eine korrekte Einrückung. So wie dein Code formatiert ist schaut es aus als wäre die while-Schleife die Ausgabe und die if-Bedingung Teil deiner for-Schleife.
 

HausAmSee

Mitglied
Vielen Dank für die Beiträge.
Also ja den überflüssigen index = 0 habe ich entfernt und die Klammersetzung ergänzt unten.
Hmm, da ich auch ziemlich (blutiger) Anfänger bin, wüsste ich jetzt nicht, wie ich dieses MIN_VALUE oder MAX_VALUE einsetze in meinem Code. Mit maximalwer = feld[0] komme ich da besser klar.
 

Joose

Top Contributor
Ist auch kein guter stil.
Eine Begründung doch immer gleich mitlieferen ;)
1.) magic value,
2.) vielleicht wird maxValue eingegeben,
3.) maxValue ist dann bereits reserviert,
4.) do-while- als Workaround vorschlag ... :)
1) Ich wüsste nicht warum eine Konstante wie MIN_VALUE eine magische Zahl ist.
2) + 3) Was hat MAX_VALUE damit zu tun?
4) Warum plötzlich eine do-while Schleife? Es ging darum einen passenden Initialwert zum Vergleichen zu haben ;)

Mit maximalwer = feld[0] komme ich da besser klar.
Wie schon oben gesagt: Musst du davor aber prüfen ob das Array überhaupt eine Länge > 0 hat. Oder eben wie JStein52 gezeigt hast MIN_VALUE einfach setzen.
Beide Varianten sind in Ordnung, verwende einfach das was du am besten verstehst.
 

HausAmSee

Mitglied
Ich habe das while unten durch ein if ersetzt.
Ich dachte, durch das if ist die Abfrage schon gegeben, . Denn sonst würde es ja keine Ausgaben geben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Scanner next() oder nextLine() zur prüfung auf leere Eingabe... Java Basics - Anfänger-Themen 6
H Leere Zeilen in Textdatei löschen lassen Java Basics - Anfänger-Themen 5
berserkerdq2 Sende eine Nachricht an den Client und leere den Ausgabestorm, was ist damit genau gemeint? Java Basics - Anfänger-Themen 3
L Java erstellt leere Datei Java Basics - Anfänger-Themen 8
R Zu viele leere Parameter Java Basics - Anfänger-Themen 8
J Datentypen CSV to DB Leere Zellen in CSV mit Inhalt? Java Basics - Anfänger-Themen 11
MiMa Leere Datei ist nicht Leer ?? Java Basics - Anfänger-Themen 6
D Datenbankzugriff - Leere Zeile einfügen Java Basics - Anfänger-Themen 2
G Leere Zeile lesen Java Basics - Anfänger-Themen 12
A Leere Datei wird ohne Inhalt geschrieben, obwohl Inhalt geschrieben wurde. Java Basics - Anfänger-Themen 4
H Leere Anweisung Java Basics - Anfänger-Themen 24
N CaretListener: leere Textfelder = Button sperren Java Basics - Anfänger-Themen 11
T Sting -> Array, leere Stellen löschen Java Basics - Anfänger-Themen 6
K HashMap auf leere Key-Value-Paare prüfen Java Basics - Anfänger-Themen 14
X Erste Schritte Java JTable leere Reihen löschen Java Basics - Anfänger-Themen 2
E leere Ausgabe Java Basics - Anfänger-Themen 5
N leere JTextArea wird nicht angezeigt - TextArea aber schon? Java Basics - Anfänger-Themen 5
M File.ser auf leere checken Java Basics - Anfänger-Themen 17
N Fehlerquelle leere ArrayList elegant abfangen Java Basics - Anfänger-Themen 3
S Leere Datei erkennen Java Basics - Anfänger-Themen 5
P Leere Arraylist hat size von 1? Java Basics - Anfänger-Themen 3
B JList und JTable: leere Zeilen bei listfiles(); Java Basics - Anfänger-Themen 5
D Wie auf leere Benutzereingabe (int) prüfen? Java Basics - Anfänger-Themen 16
A Leere Fläche einer Tabelle umfärben Java Basics - Anfänger-Themen 3
B BufferedWriter - nur leere Datei erstellt Java Basics - Anfänger-Themen 4
G Leere Datei löschen? Java Basics - Anfänger-Themen 3
G leere columns "verstecken" Java Basics - Anfänger-Themen 5
G leere Ordner befinden sich nicht im Zip-Archiv Java Basics - Anfänger-Themen 8
K Leere Stelle im Array finden und ersetzen Java Basics - Anfänger-Themen 10
D String mit split teilen und leere Felder behalten Java Basics - Anfänger-Themen 4
G RegEx für leere IP Adresse? Java Basics - Anfänger-Themen 13
J POI: Leere Excel Zellen Java Basics - Anfänger-Themen 3
S In einer CSV Datei leere Zeilen ignorieren Java Basics - Anfänger-Themen 6
J Leere Textfields automatisch mit einem Wert ausfüllen Java Basics - Anfänger-Themen 3
S Leere Menge von integer Java Basics - Anfänger-Themen 3
R leere Zeichenkonstante? Java Basics - Anfänger-Themen 12
G Leere java.util.List erzeugen Java Basics - Anfänger-Themen 2
Torschti Eingabe von Dezimalzahlen (bis zu zwei Kommastellen) Java Basics - Anfänger-Themen 11
T User input in Verbindung mit ChronoUnit anpassen und falls falsche Eingabe getätigtwird Java Basics - Anfänger-Themen 7
T Eingabe durch eine Zahl dividieren nachgucken? Java Basics - Anfänger-Themen 4
T sortierung der eingabe nach größe Java Basics - Anfänger-Themen 5
Ostkreuz Int Scanner auf Enter Eingabe prüfen Java Basics - Anfänger-Themen 4
G Programm läuft durch, ohne Eingabe aus dem Chat abzuwarten Java Basics - Anfänger-Themen 4
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
S Größte Zahl nach Eingabe der Zahl 0 ausgeben Java Basics - Anfänger-Themen 6
M Dialogbox sofort neustarten, falls aktuelle Eingabe falsch Java Basics - Anfänger-Themen 11
M Dialogbox solange abfragen, bis gültige Wert-Eingabe Java Basics - Anfänger-Themen 12
S OOP Java Eingabe in verschiedene Datenbank Tabellen eintragen Java Basics - Anfänger-Themen 7
A Bei VierGewinnt Eingabe per Buchstabe (a,b,c...) Java Basics - Anfänger-Themen 2
java-starter Erste Schritte Eingabe in Char wert umwandeln Java Basics - Anfänger-Themen 7
Lion.King Subtraktion nach Eingabe im Terminal Java Basics - Anfänger-Themen 7
X Erste Schritte Scanner eingabe wird übersprungen Java Basics - Anfänger-Themen 4
L Dauerhaftes Speichern einer Eingabe bei einer ArrayList Java Basics - Anfänger-Themen 26
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 0
J In der Ausgabe wird ohne Eingabe in den else Block gesprungen. Java Basics - Anfänger-Themen 5
J Mein Programm läuft bei der ersten Eingabe nicht mehr weiter, woran liegt das? Java Basics - Anfänger-Themen 6
M Eingabe limit Java Basics - Anfänger-Themen 8
brypa Programm mit Eingabe Java Basics - Anfänger-Themen 129
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
D falsche eingabe erkennen Java Basics - Anfänger-Themen 2
H Eingabe tätigen bevor Graphics g Fenster öffnet Java Basics - Anfänger-Themen 5
H For-Schleife bis Index von Eingabe laufen lassen Java Basics - Anfänger-Themen 24
Hamudi Bachir 2D Array eingabe vom Benutzer Java Basics - Anfänger-Themen 31
S Warum erscheint bei mir "Hallo Welt" und nicht die aktuelle Eingabe? Java Basics - Anfänger-Themen 16
J Jtable Eingabe nach Klick ausserhalb der Tabelle übernehmen Java Basics - Anfänger-Themen 6
B Array bei jeder Eingabe um eins erweitern Java Basics - Anfänger-Themen 3
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
M Nach einer erstmaligen Eingabe, eine zweite Eingabe nur noch gegen bestätigung möglich Java Basics - Anfänger-Themen 2
chocobear26 Interface JOptionPane - Dialog_Fenster zeigt immer vorherige Eingabe an. Java Basics - Anfänger-Themen 4
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
M JTextField nur Zahleneingaben zulassen, eingabe sperren Java Basics - Anfänger-Themen 24
E Timer trotz erwartender Eingabe durchlaufen lassen Java Basics - Anfänger-Themen 11
K falsche Eingabe abfangen Java Basics - Anfänger-Themen 8
N Eingabe erkennen, ob groß oder kleingeschrieben worden ist Java Basics - Anfänger-Themen 22
N Fehlerausgabe bei falscher Eingabe der Users Java Basics - Anfänger-Themen 3
N Eingabe des Users direkt hinter die Ausgabe Java Basics - Anfänger-Themen 3
N Eingabe Kommazahlen über Scanner Java Basics - Anfänger-Themen 2
O Mehrfache Scanner-Eingabe durch Komma getrennt Java Basics - Anfänger-Themen 6
M String array durch Eingabe begrenzen Java Basics - Anfänger-Themen 7
iman Eingabe von Benutzer Filter machen. Java Basics - Anfänger-Themen 7
M Input/Output JTextField Eingabe in String Variable speichern Java Basics - Anfänger-Themen 15
D Eingabe einscannen, ohne vorher einen Datentypen anzugeben? Java Basics - Anfänger-Themen 1
M Verschiedene Eingabe = Verschiedene Ausgaben Java Basics - Anfänger-Themen 5
H Eingabe Java Basics - Anfänger-Themen 7
F Bedingung für Eingabe Java Basics - Anfänger-Themen 2
K Durch eine Text eingabe etwas Ausführen Java Basics - Anfänger-Themen 5
Dimax Erste Schritte String Eingabe Prüfen Java Basics - Anfänger-Themen 11
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
B Türme von Hanoi mit einer beliebigen aber gültigen Eingabe lösen Java Basics - Anfänger-Themen 5
D While Schleife bei Bedarf durch Eingabe stoppen Java Basics - Anfänger-Themen 15
J Eingabe Einschränken Java Basics - Anfänger-Themen 1
Zrebna Compiler-Fehler Java-Compiler wird nach 'javac' keyword-Eingabe nicht gestartet (Erste Übung) Java Basics - Anfänger-Themen 18
A Datentypen Unterschiedliche Datentypen in einer Eingabe einlesen Java Basics - Anfänger-Themen 2
D Array via Eingabe befüllen Java Basics - Anfänger-Themen 6
M Wie kann ich eine Eingabe im Java-Swing übergeben? Java Basics - Anfänger-Themen 1
N Abbrechen einer Eingabe endet im Fehler Java Basics - Anfänger-Themen 3
S Konsolen eingabe Java Basics - Anfänger-Themen 17
M Scanner-Eingabe nach gewissem Zeitraum überprüfen Java Basics - Anfänger-Themen 2
x-tshainge Bei if (eingabe = = ... ) enter als eingabe nehemen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben