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