【问题标题】:Loop completely skips else循环完全跳过其他
【发布时间】:2023-02-05 13:51:04
【问题描述】:

我创建了这个程序来检查数组中的每三个元素,看看三个元素中哪一个是最小的数字。我在第三次检查号码时遇到问题。好像我的程序完全跳过了else语句,我也不知道为什么。请帮忙。

public class MinimumThree{
    
    public static void main(String[] args){
        int[] allNums = {9546090, -2970855, -9855973, //0
9371931, 6384382, -6572105, //1
8010119, 4650629, 1809075,  //2
621406, -533910, -6641563,  //3
2239374, 9103245, 9449092,
2151455, 8992428, -2024049, //5
-974953, -8609904, -1604141,//6
-6093141, 694404, 6682392,  
-2768011, -2470814, 3542642,
-4554484, 6261148, 5609316,
7640387, -2091321, -9378998,  //10
-1964472, -1923829, 1892163,
-8099458, 9384232, -9611172,    //12
-9231042, -1957104, -769289,
-8614838, -5320162, -3788791,
8874853, -5623631, 2014317, //
5167069, -6186510, -3315506,//
9591483, 9139903, 295243,//
-2116652, -9305470, 6707044,//
-980294, 6488409, -744023,
-4367004, -2692417, -2723892};
        
        int num1, num2, num3;
        int[]minNums = new int[21];
        int counter = 0;
        int i;
        //TEST
        System.out.println("AllNums length: " + allNums.length);
        //-----
        
        for( i =2; i < allNums.length; i+=3){
            num1 = allNums[i];   
            num2 = allNums[i-1]; 
            num3 = allNums[i-2]; 
            
            if(num1 < num2){
                if(num1 <num3){
                    minNums[counter] = num1;
                    //TEST
                    System.out.println("Counter before: " + counter);
                    //System.out.print(minNums[counter] + " ");
                    //counter++;
                    //TEST
                    System.out.println("Counter after: " + counter);
                }
            }
            else if(num2 < num1){
                if(num2 < num3){
                    minNums[counter] = num2;
                    //TEST
                    System.out.println("Counter before: " + counter);
                    //System.out.print(minNums[counter] + " ");
                    //counter++;
                    System.out.println("Counter after: " + counter);
                }
            }else{
                //TEST TEST TEST
                System.out.println();
                System.out.println("NUM3: " + num3);
                //
                minNums[counter] = num3;
                //TEST
                System.out.println("Counter before: " + counter);
                //System.out.print(minNums[counter] + " ");
                //counter++;
                //TEST
                System.out.println("Counter after: " + counter);
            }
            counter++;
        }
        //TEST
        System.out.println();
        System.out.println("i end result: " + i);
        System.out.println("counter end result: " + counter);
        //--------
        for(int j = 0; j < minNums.length; j++){
            System.out.print(minNums[j] + " ");
        }
        //i = 2;  i +=3;  i = 5
        //array[i]
        //a = i - 2;
        //b = i - 1;
        //c = array[i]
    }
}

Console Output

我尝试将递增的计数器放在 if 语句之外以查看这是否是错误,但事实并非如此。

【问题讨论】:

  • if (num1&lt;num2)...else if (num2&lt;num1)...else..你的else只会在num1 == num2时运行
  • 好的,现在有道理了。我将重新编写代码,看看是否可以解决它。

标签: java arrays for-loop if-statement


【解决方案1】:

你的 else if 语句格式不正确。目前,除非 num1 == num2 他们永远不会到达最后一个 else 语句,因为 num1num2 通常比另一个大。你的其他如果需要看起来像

if (num1 < num2 && num1 < num3) {
    ...
  } 
else if (num2 < num1 && num2 < num3) {
     ...
  } 
else {
     ...
}

【讨论】:

    猜你喜欢
    • 2012-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多