Auch wenn dieser Code kompiliert:Was muss ich tun, um diesen Scanner-bezogenen Fehler zu beheben?
import java.util.Scanner; // imports the Scanner class from the java.util package
public class ScannerPractice {
public static void main(String args[]) {
Scanner word = new Scanner("word 1 2 3 4"); // creates a new Scanner objecrt with a string as its input
String scaStr = word.nextLine(); // converts scanner to string
String strArr[] = new String[10];
// as long as the scanner has another character...
for (int i = 0; i < scaStr.length(); i++) {
int j = 0;
String k = "";
// if the next token is an integer...
if (word.hasNextInt()) {
j = word.nextInt();
k = String.valueOf(j);
strArr[i] = k;
}
// otherwise, skip over that token
else {
word.next();
}
}
String k = "";
// for each character in charArr
for (int i = 0; i < strArr.length; i++) {
// Accumulate each element of charArr to k
k += " " + strArr[i];
}
System.out.print(k);
}
}
ich diesen Fehler:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at ScannerPractice.main(ScannerPractice.java:28)
Die Ausnahme bezieht sich 28, die Linie, die ist:
word.next();
Ich habe versucht, Blick auf meine for-Schleife, die dem Zeichenfolgenarray Werte zuweist, aber ich konnte den Fehler immer noch nicht finden.
Ich bin mein Gehirn versucht, dies zu lösen. Sogar ein Hinweis würde am meisten geschätzt werden.
Gemäß der Dokumentation wirft Scanner das, wenn Sie 'next()' aufrufen und keine Tokens mehr verfügbar sind. Und sie sind nicht verfügbar, weil sie noch nicht getippt wurden, denke ich. –
Ihr Code macht keinen Sinn, weil Sie einen Scanner erstellen, der Tokens verarbeiten kann, aber dann über eine flache Zeichenfolge iterieren. Möchten Sie also mit einem Scanner oder mit einer normalen Zeichenfolge in Tokens arbeiten? –
Denken Sie darüber nach, wie viele Iterationen Sie durchlaufen, wenn Sie 'scaStr.length()' für Ihre Schleife verwenden. Wenn Sie im wahrsten Sinne des Wortes nur versuchen, alle Ints aus Ihrer Zeichenfolge zu analysieren, können Sie einfach 'word.hasNextInt()' verwenden, um zu bestimmen, ob Sie weitermachen möchten oder nicht. – Dana