我正在練習Java,並且遇到了一些奇怪的問題,或者應該說出問題。Java不會從掃描器輸入中返回字符串
當我編譯下面的代碼,它說java的行號:錯誤:
missing return statement.
如果我刪除,我有return "not valid"
的評論,它編譯。
現在,這是另一個問題進來。當我通過我輸入作爲A
和B
,它返回無效的init_config
和final_config
字符串。但是當我通過"A"
和"B"
到其他功能(other("A", "B")
具體的回報這是"C"
返回/打印。
我不知道,如果這個問題還是在於我的輸入法。我init_config和final_config的數據I輸入應該是字符串值,是否正確?我不確定Scanner是否是一個很好的字符串輸入方法。但是,如果我打印兩個輸入它工作正常,所以我不確定它是數據丟失還是字符串引用丟失時它被傳遞。
我也試過更換init_config = in.next()
與init_config = in.nextLine()
但它並沒有任何區別。
是否需要在函數的末尾編譯代碼爲return "not valid"
,或者我可以通過某種方法繞過此代碼嗎?我怎樣才能使用Scanner
輸入法傳遞字符串數據而沒有任何損失?
這裏是我的代碼:
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";
}
}
永遠不要用'=='測試字符串總是使用'equals'方法。 –
謝謝。 @ Jean-BaptisteYunès – mickey4691