Java 对于具有多个条件的循环

Java 对于具有多个条件的循环,java,for-loop,Java,For Loop,我有一个数组 int[] arr = {9,20,-2,-45,23,5,1}; 我正在使用 java.util.Arrays.sort(arr); for循环: for(int i =0;(i<arr.length) && (arr[i] > 0) ; i++) 及 for(int i=0;(ijava.util.Arrays.sort(int[]arg);按升序排序,因此排序后的第一个值(arr[0])将为-45。for(int i=0;(i 0);i++在

我有一个数组

int[] arr = {9,20,-2,-45,23,5,1};
我正在使用

java.util.Arrays.sort(arr);
for循环:

for(int i =0;(i<arr.length) && (arr[i] > 0) ; i++)


for(int i=0;(i
java.util.Arrays.sort(int[]arg);
按升序排序,因此排序后的第一个值(
arr[0]
)将为-45。
for(int i=0;(i 0);i++
在第一次迭代时将为false,因为
arr[0]=-45
,因此
(arr[0]>0)
为false。)

一旦对数组进行排序,
-45
将成为第一个元素,因此
>0
检查立即计算为
false


另一方面,前两个元素的
<0
计算结果为
true
,整个数组的
!=0
计算结果为
true

本质上,对数组排序后,循环将永远不会运行

条件
arr[i]>0
无效,因为您将遇到的第一个元素将小于0

只要阵列中没有0,条件
arr[i]!=0
就会运行


条件
arr[i]<0
仅对前两个元素运行。

第一个循环在第一个项目之前停止,因为
arr[0]
为负值

如果要在循环中仅获取正元素,正确的语法为:

    for (int i = 0; (i < arr.length) ; i++) {
        if (arr[i]> 0) {
            // Do stuff
        }
    }
for(int i=0;(i0){
//做事
}
}
数组。默认情况下,sort()
将根据给定数组的
自然顺序对其进行排序。对于
int
,这意味着升序。鉴于此,以下是3个循环的运行方式:

for (int i =0; (i<arr.length) && (arr[i] > 0); i++)
因为数组中没有值为
0
的元素
(arr[i]!=0)
总是计算为
true
。这样,循环就沿着数组的长度插入

for (int i =0; (i<arr.length) && (arr[i] < 0); i++)

for(int i=0;(i for
Arrays.sort()

这些循环应该以什么方式工作?如果您试图输出已排序数组的内容,请删除第二个条件,只需执行:for(int i=0;i
i
为0,
arr[i]
排序后为-45,因此您的条件为
false
,循环将不会执行。您的问题是什么???-45小于0。我在这里看不到问题。按预期工作。感谢各位。For(arr[I]>0)。我希望它打印数组中的所有正数,但基本条件本身为false,因此我没有递增。感谢您的帮助。:)我认为排序后第一个元素将为-45。但您的逻辑仍然正确(+1)@mike,我只是想告诉你一个更新,排序后的元素将按升序排序,所以在这种情况下,它将
-45
,而不是
-2
.Derp。完全错过了-45。修复。谢谢@obourgain。这是我应该做的。
for (int i =0; (i<arr.length) && (arr[i] > 0); i++)
for (int i =0; (i<arr.length) && (arr[i] != 0); i++)
for (int i =0; (i<arr.length) && (arr[i] < 0); i++)