我的循环只运行一次。
此代码假设采用主队名称,客队名称,主队得分,客队得分并将其存储。输入“ EXIT”时,它仅应退出循环。但是循环只运行一次。出口部分起作用。我是Java的新手,如果只是一个小错误,对不起。
我还没有处理任何异常,因此代码不完整。
String[] ht_name = new String[9999];
String[] at_name = new String[9999];
int[] ht_score = new int[9999];
int[] at_score = new int[9999];
Scanner scanint = new Scanner(System.in);
Scanner scanstr = new Scanner(System.in);
int i=0;
//do while loop starts
do {
System.out.println("Enter Home team name: ");
ht_name[i] = scanstr.nextLine();
if(!ht_name[i].equalsIgnoreCase("exit"))
{
System.out.println("Enter Away team name: ");
at_name[i] = scanstr.nextLine();
System.out.println("Enter Home team score: ");
ht_score[i] = scanint.nextInt();
System.out.println("Enter Away team score: ");
at_score[i] = scanint.nextInt();
i++;
}
} while (!ht_name[i].equalsIgnoreCase("exit"));
//do while loop ends
}}
答案 0 :(得分:3)
您的索引计算错误, 最后一行代码应如下所示:
while (!ht_name[i-1].equalsIgnoreCase("exit"))
答案 1 :(得分:2)
此代码为您提供or
,因为您增加了NullPointerException
变量,然后紧接着从i
数组中的i
索引处获取了一个值,该值等于null。>
您的代码应该看起来像这样:
ht_name
答案 2 :(得分:1)
问题在于您的while逻辑。您正在检查尚不存在的索引的值。记住你已经增加了。这样想吧:
如您所见,您的错误在于最后一步。您应该检查上一个索引中的元素,而不是当前索引中的元素。只需将while
条件更改为此:
while (!ht_name[i-1].equalsIgnoreCase("exit"))
我希望这对您有所帮助。快乐的编码。