我的程序需要用户输入才能创建运动评分表。 当数组“words”包含少于4个元素时,其验证功能会打印“Invalid input”
for (int i = 0; i < counter; i++) { // A loop to control the Array
String[] words = football_list[i].split(":"); // Splits the input into 4 strings
if (words.length != 4) { // If the length of the array elements does not equal 4 then print error message
System.out.println("Input was not valid");
当我输入错误的输入FIRST时,它会使以下其余分数被视为同样不正确,即使它们是正确的 - 这是示例文本控制台上的示例。
主队:客场球队:主场得分:客场得分
利兹:利物浦:2:
主队:客场球队:主场得分:客场得分
利兹:利物浦:2:1
主队:客场球队:主场得分:客场得分
利兹:利物浦:2:1
主队:客场球队:主场得分:客场得分
利兹:利物浦:2:1
主队:客场球队:主场得分:客场得分
退出
输入无效
输入无效
输入无效
输入无效
总计 -------------------------比赛总数:0 *
END -
这就是我认为问题所在:
for (int i = 0; i < counter; i++) {
String[] words = football_list[i].split(":"); 4 strings
if (words.length != 4) {
System.out.println("Input was not valid");
counter--;
i--;
} else {
System.out.println(words[0].trim() + " [" + words[2].trim() + "]" + " | " + words[1].trim() + " [" + words[3].trim() + "]"); // Formats and prints the output
System.out.println(" ");
System.out.println(" ");
System.out.println(" ");
System.out.println(" Totals ");
System.out.println("-------------------------");
System.out.println("Total games played: " + counter);
}
}
答案 0 :(得分:0)
不要在循环内减少i
。
答案 1 :(得分:0)
因为如果输入无效,您会减少i
和counter
。然后在for语句中增加i
。在这种情况下,您在counter > i
答案 2 :(得分:0)
为了使事情更具可读性且不易出错,您只需使用数组的length
来控制循环结束,并在输入有效时增加counter
(从0开始) :
int counter = 0;
for (int i = 0; i < football_list.length; i++) { // A loop to control the Array
String[] words = football_list[i].split(":"); // Splits the input into 4 strings
if (words.length != 4) { // If the length of the array elements does not equal 4 then print error message
System.out.println("Input was not valid");
} else {
counter++;
System.out.println(words[0].trim() + " [" + words[2].trim() + "]" + " | " + words[1].trim() + " ["
+ words[3].trim() + "]"); // Formats and prints the output
}
}