Kein Solches Element Ausnahme?
So, hier ist mein code:
public static void getArmor(String treasure)
throws FileNotFoundException{
Random rand=new Random();
Scanner file=new Scanner(new File ("armor.txt"));
while(!file.next().equals(treasure)){
file.next(); //stack trace error here
}
int min=file.nextInt();
int max=file.nextInt();
int defense=min + (int)(Math.random() * ((max - min) + 1));
treasure=treasure.replace("_", " ");
System.out.println(treasure);
System.out.println("Defense: "+defense);
System.out.println("=====");
System.out.println();
}
public static void getTreasureClass(Monster monGet)
throws FileNotFoundException{
Random rand = new Random();
String tc=monGet.getTreasureClass();
while (tc.startsWith("tc:")){
Scanner scan=new Scanner(new File ("TreasureClassEx.txt"));
String eachLine=scan.nextLine();
while(!tc.equals(scan.next())){
eachLine=scan.nextLine();
}
for (int i=0;i<=rand.nextInt(3);i++){
tc=scan.next();
}
getArmor(tc); //stack trace error here
}
}
Für einige Grund ich bekomme Kein Solches Element Ausnahme
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1416)
at LootGenerator.getArmor(LootGenerator.java:43)
at LootGenerator.getTreasureClass(LootGenerator.java:68)
at LootGenerator.getMonster(LootGenerator.java:127)
at LootGenerator.theGame(LootGenerator.java:19)
at LootGenerator.main(LootGenerator.java:11)
Ich bin mir nicht sicher, warum aber. Im Grunde ist mein Programm sucht durch zwei text-Dateien - armor.txt und TreasureClassEx.txt. getTreasureClass erhält ein Schatz Klasse von einem monster und durchsucht die txt-bis zum erreichen einer base armor Element (einen string, der nicht mit tc:.) Er sucht dann getArmor für eine Rüstung, die mit den Namen der Grundwert der Rüstung habe es in Schatz-Klasse. Jede Beratung wird geschätzt! Danke!
Den link zu der txt-Dateien ist hier: http://www.cis.upenn.edu/~cis110/hw/hw06/large_data.zip
- Es wäre schön, wenn könnten Sie Flagge in den code-Zeilen erwähnt, die in der Stapel-Ablaufverfolgung unter Verwendung von Kommentaren, so dass wir bekommen können eine Referenz.
- Kannst du den Inhalt der Datei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sieht es aus wie Sie den Aufruf weiter, auch wenn der scanner nicht mehr über eine nächste element zu liefern... das werfen der Ausnahme.
Sollte so etwas wie
Sieht aus wie Ihre Datei.die next () - Zeile in der while-Schleife wirft die NoSuchElementException da der scanner erreicht das Ende der Datei. Lesen Sie die next () - java-API hier
Auch sollten Sie nicht rufen Sie die next() in der Schleife und auch in der while-Bedingung. In der while-Bedingung sollten Sie überprüfen, ob das nächste token zur Verfügung und innerhalb der while-Schleife überprüfen, ob die gleich Schatz.
Ich Weiß, diese Frage wurde gefragt vor 3 Jahren, aber ich hatte gerade das gleiche problem, und was es gelöst wurde, anstatt:
Ich habe eine iteration auf die Schaltfläche start und anschließend überprüft, die Bedingung der Verwendung:
Ich hoffe, dies wird helfen, einige Menschen zu irgendeinem Zeitpunkt.
Hatte ich laufen in das gleiche Problem, während ich den Umgang mit großen Datensätzen. Eine Sache, die ich bemerkt habe, war die
NoSuchElementException
wird ausgelöst, wenn der Scanner erreicht dieendOfFile
, wo es nicht auf unsere Daten.Hier, ich habe meinen code in
try block
undcatch block
Griffe derexception
. Sie können auch lassen Sie es leer, wenn Sie nicht wollen, um die entsprechenden Aufgaben.Für die oben genannte Frage, weil Sie mit
file.next()
beide in dem Zustand und in der while-Schleife können Sie die Ausnahme behandeln alsDies funktionierte perfekt für mich, wenn es irgendwelche Ausnahmefälle für meinen Ansatz, lasst es mich wissen durch Kommentare.