Java Can';在带有和if-else语句的for循环中,似乎无法获得正确的值

Java Can';在带有和if-else语句的for循环中,似乎无法获得正确的值,java,Java,这是我的代码: int numArray [] = {1, 7, 6, 4, 5, 9}; int high = 0,low = 0; for (int count = 0; count < 2; count++) { if (count == 0) { for (int countA = 0; countA < numArray.length-1; countA++) { //The increment expre

这是我的代码:

    int numArray [] = {1, 7, 6, 4, 5, 9};

    int high = 0,low = 0;

    for (int count = 0; count < 2; count++) {
        if (count == 0) {
            for (int countA = 0; countA < numArray.length-1; countA++) { //The increment expression is invoked after each iteration/time through the loop.
                high = numArray[countA];
                if (high < numArray[countA+1]) {
                    high = numArray[countA+1];
                }
            }
        }
        else {
            for (int countB = 0; countB < numArray.length-1; countB++) {
                low = numArray[countB];
                if (low > numArray[countB+1]) {
                    low = numArray[countB+1];
                }
            }   
        }
    }
int numArray[]={1,7,6,4,5,9};
int高=0,低=0;
对于(int count=0;count<2;count++){
如果(计数=0){
对于(int countA=0;countA努马拉伊[countB+1]){
低=努马拉伊[countB+1];
}
}   
}
}

当我从else块打印low值时,它打印5而不是预期值1。这是为什么?

我知道它并没有真正回答你的问题,但代码是:

for (int count = 0; count < 2; count++) {
  if (count==0) {
    doSomething();
  } else {
    doSomethingElse();
  }
}

总是考虑

,您可以对数组(或数组的克隆)排序,如

哪个输出

Values = [1, 7, 6, 4, 5, 9], Low = 1, High = 9

其他响应者为您提供了一种更好的编写方法,但为了具体解决您最初的问题,您获得“意外”(对您而言)值“low”的原因是您无条件地将数组的每个条目分配给“low”。带有“5”的条目是您处理的最后一个条目,因此这是您最终得到的值

为了解决这个特定的问题,您可以将数组条目值分配给一个新的局部变量,可能称为“newlow”。然后,将“newlow”与现有的“low”值进行比较,然后有条件地分配它,可能如下所示:

            low = numArray[0];
            for (int countB = 0; countB < numArray.length-1; countB++) {
                int newlow = numArray[countB];
                if (newlow < low) {
                    low = newlow;
                }
            }   
low=numArray[0];
for(int countB=0;countB
当你用一个调试器,或者至少是一张纸和一支铅笔来处理这个问题时,发生了什么?我用eclipse编译了这个,它给了我5。我所做的是从最外层的if语句复制for循环,并将其粘贴到else块中;如果使用不同的int数组,你的high值也会不正确。好的,谢谢,我在想,如果将它转换为方法会有所帮助。仔细查看最后一个循环,假装你是一个计算机程序,然后自己完成每一步。当
countB
为4时,程序将做什么?感谢您的贡献,我可以在以后使用它来缩短代码块。谢谢,但是您能给我一点额外的解释吗?关于哪一部分?这将对
numArray
副本进行排序,然后提取最高值和最低值。。。(记住,一旦排序,最低的值是第一个,最高的值是最后一个)。谢谢你的解释。你是说numaray.length而不减去它,对吗?
Values = [1, 7, 6, 4, 5, 9], Low = 1, High = 9
            low = numArray[0];
            for (int countB = 0; countB < numArray.length-1; countB++) {
                int newlow = numArray[countB];
                if (newlow < low) {
                    low = newlow;
                }
            }