Warum bekomme ich einen Unreachable Statement Fehler in Java?
Wenn ich versuche zu kompilieren dieses Programm, bekomme ich ein "unreachable statement" Fehler in Zeile 21:
import java.util.*;
import java.io.*;
import java.nio.file.*;
import java.lang.StringBuilder;
class FilePrep {
public static void main(String args[]) {
}
public String getStringFromBuffer() {
try {
Path file = Paths.get("testfile2.txt");
FileInputStream fstream = new FileInputStream("testfile2.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String inputLine = null;
StringBuffer theText = new StringBuffer();
while((inputLine=br.readLine())!=null) {
theText.append(inputLine+" ");
}
return theText.toString();
System.out.println(theText); //<-- line 21
}
catch (Exception e)
{
System.err.println("Error: " + e.getMessage());
return null;
}
}
}
Den vollständigen compiler Ausgabe:
Main.java:21: error: unreachable statement
System.out.println(theText);
^
Main.java:28: error: missing return statement
}
^
2 errors
Ich denke die return
Aussagen in den richtigen stellen sind...Sie scheinen zu sein, zumindest für mich, und das Programm scheint, so leicht im Vergleich zu dem, den ich geklont es aus, ich habe eine wirklich harte Zeit, herauszufinden, warum diese Aussage nicht erreichbar ist.
Was habe ich falsch gemacht beim kopieren Sie den code und wie muss ich es korrigieren?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hast du Recht, vorausgesetzt, dass Ihr problem ist hier:
den
return
Funktion kündigen Ihre Methode, was bedeutet, keine Zeile code, die Vergangenheit wird Sie ausgeführt.Wenn Sie möchten drucken, um durch zu gehen, sollten Sie bewegen Sie es über die return-Anweisung.
return
im Falle der Daten, die benötigt werden, umreturn
ed für dieprintln
auf ihn zugreifen....irgendwelche anderen Ideen?Hast du eine Anweisung nach der return-Anweisung.
Hier sind die zwei fehlerhaften Zeilen:
Wechseln Sie herum.
Wenn die
return
- Anweisung ausgeführt wird, die Methode der Verzicht auf die Kontrolle an den Aufrufer. Das ist, warum dieprintln
wird nicht ausgeführt; das ist, warum der compiler meckert.Aussagen nicht erreichbar sind, bestimmte und zuverlässige Indikatoren für einen logischen Fehler in deinem Programm. Es bedeutet, dass Sie in Anweisungen, die nicht ausgeführt werden, aber Sie davon ausgehen, dass Sie sein würde. Der compiler analysiert den Fluss, und meldet diese Aussagen, um Sie als Fehlermeldungen angezeigt.
Die print-Anweisung kommt nach einer zurück - Anweisung. Die Funktion beenden Sie immer, bevor es auf die print-Anweisung. "Nicht erreichbar"
Wechseln Sie die Reihenfolge der zwei Linien um und es wird funktionieren.
Den
return
- Anweisung sollte immer am Ende oder Letzte Zeile des definition-Blocks. Wenn Sie halten alle Anweisungen nach derreturn
- Anweisung diese Aussagen sind nicht erreichbar, Aussagen über den controller. Durch die Verwendungreturn
- Anweisung sagen wir Steuern sollten zurück an den Aufrufer explizit.Beispielsweise
In diesem Beispiel erhalten wir compile-Zeit-Fehler, wie
unreachable code
weil die Kontrolle nicht erreichen kann, um die Letzte Anweisung für die Ausführung.Also, immer
return
- Anweisung die Letzte Anweisung des definition-Blocks.