我的for循环中的If语句表现得很奇怪

时间:2017-01-05 15:48:11

标签: java arrays validation debugging for-loop

我的程序需要用户输入才能创建运动评分表。 当数组“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);
    }
}

3 个答案:

答案 0 :(得分:0)

不要在循环内减少i

答案 1 :(得分:0)

因为如果输入无效,您会减少icounter。然后在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    

            }
        }