public static void choice(String arrayString[], double arrayReal[])
{
int choice;
Scanner sc = new Scanner(System.in);
System.out.println("1.display mark");
System.out.println("2.exit");
choice = sc.nextInt();
while (choice !=2 && choice != 1)
{
System.out.println("invalid input enter again");
choice = sc.nextInt();
}
switch (choice)
{
case 1:
output(arrayString, arrayReal);
break;
case 2:
System.out.println("exiting");
break;
default:
System.out.println("invalid choice choose between 1 and 2");
choice = sc.nextInt();
}
}
public static void output(String arrayString[], double arrayReal[])
{
String name;
Scanner sc = new Scanner(System.in);
for (int i=0;i<arrayString.length;i++)
{
System.out.println(arrayString[i]);
}
System.out.println("enter stident name");
name = sc.nextLine();
for (int k=0;k<arrayString.length;k++)
{
if(!arrayString.equals(name))
{
System.out.println("invalid name");
choice(arrayString, arrayReal);
}
}
for (int j=0;j<arrayString.length;j++)
{
if (arrayString[j].equals(name))
{
System.out.println("mark of " + arrayString[j] + "is " + arrayReal[j]);
}
}
即時嘗試驗證學生名稱,如果它不等於數組中的任何名稱返回到菜單。它會返回菜單,但問題在於返回到菜單後,即使我輸入了正確的學生姓名,如果keps返回菜單。我認爲循環應該循環設置次數並傳遞給下一個代碼?是對的嗎?我的方法也正確嗎?如果在最後的for循環中嘗試過,但是這並沒有結束,因爲我也想要它。任何幫助表示讚賞謝謝!for循環 - 循環超過其應該?
EDIT- 感謝您發現錯誤。固定arrayString.equals(名稱)arrayString [K] .equals(名稱),但仍是同樣的問題
''如果< - 你是比較數組' arrayString'轉換爲String名稱。他們永遠不會平等。 –
我真的不知道其餘的代碼,但是這個'if(!arrayString.equals(name))'將總是'true',因爲你正在比較'String'和'String [ ]'。可能你的意思是'if(!arrayString [k] .equals(name))'(這也會導致問題,因爲除非數組中的所有字符串相同,否則其中一個將失敗)。 – SJuan76