Ich übe Java und ich bin auf ein kleines merkwürdiges Problem gestoßen oder sollte ich Probleme sagen.Java gibt keine Zeichenkette vom Scanner-Eingang zurück
Wenn ich den folgenden Code zu kompilieren sagt es java line #: Fehler:
missing return statement.
Wenn ich den Kommentar zu entfernen, wo ich return "not valid"
haben, kompiliert.
Nun ist dies, wo die andere Frage kommt. Wenn ich die init_config
und final_config
String übergeben, die ich als Eingang A
und B
, den nicht gültig zurückgibt. Aber wenn ich "A"
und "B"
auf andere Funktion übergeben (other("A", "B")
die spezifische Rendite, die "C"
ist zurückgegeben/gedruckt.
Ich bin nicht sicher, ob das das Problem liegt bei meiner Eingabemethode. Die Daten-I-Eingang für meine init_config und final_config sollte String-Werte sein, richtig? Ich bin mir nicht sicher, ob Scanner eine gute String-Eingabemethode ist. Wenn ich jedoch die beiden Eingaben drucke, funktioniert es gut, also bin ich mir nicht sicher, ob es Datenverlust ist oder die String-Referenz verloren ist es wird übergeben.
ich habe auch versucht init_config = in.next()
mit init_config = in.nextLine()
ersetzen, aber es hat keinen Unterschied machen.
Ist es notwendig, den Code mit dem return "not valid"
am Ende der Funktion zu kompilieren oder kann ich dies mit einer Methode umgehen? Und wie kann ich String-Daten mit Scanner
Eingabemethode ohne Verlust übergeben?
Hier ist mein Code:
import java.util.Scanner;
public class towerGen
{
public static void main(String[]args)
{
Scanner in = new Scanner(System.in);
String init_config, final_config;
System.out.print("Enter initial configuration: ");
init_config = in.next();
System.out.print("Enter final configuration: ");
final_config = in.next();
System.out.print(other(init_config, final_config));
}
public static String other(String src, String dest)
{
if (src=="A" && dest=="B")
return "C";
if (src=="B" && dest=="A")
return "C";
if (src=="B" && dest=="C")
return "A";
if (src=="C" && dest=="B")
return "A";
if (src=="A" && dest=="C")
return "B";
if (src=="C" && dest=="A")
return "B";
//return "not valid";
}
}
Testen Sie niemals Zeichenfolgen mit '==' immer '' equals' 'Methode verwenden. –
Danke. @ Jean-BaptisteYunès – mickey4691