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;
}
}