如何在数组中查找大于,小于或等于某个值的数字?

时间:2014-10-25 01:12:04

标签: java arrays loops for-loop

我正在尝试输出小于5的值以及大于数组中所有值的平均值的值。我无法弄清楚如何使它全部运转并输出正确的数字。有人可以帮忙吗?

这里有我所拥有的,我几乎在那里,我只是不知道自己做错了什么。

{
   int[] numbers = {2, 4, 6, 8, 10, 12, 14, 16};
   int sum = 0;
   for (int x : numbers)
       sum += x;

System.out.println("Numbers in order:"); 
   {
       for(int x = 0; x < numbers.length; ++x) 
           System.out.println(numbers[x]);
   }
   System.out.println("Numbers in reverse order:");
   {
       for(int x = 0; x < numbers.length; ++x) 
           System.out.println(numbers[x]);
   }

   System.out.println("The sum of all eight numbers is: " + sum);
   System.out.println("The lowest number is: " + numbers[0]);
   System.out.println("The highest number is: " + numbers[7]);
   System.out.println("The average of all eight numbers is: " + sum * 1.0 / 8);
   System.out.println("All numbers higher than the average are: ");
   {
       for(int x = 0; x < numbers.length && x > 9;)
       {numbers[x] = x + 1;}
       int x = 0;
       System.out.println(numbers[x]);
   }
   System.out.println("Numbers less than 5: ");

   {
       for(int x = 0; x < numbers.length && x > 5;)
       {numbers[x] = x + 1;}
       int x = 0;
       System.out.println(numbers[x]);
   }
}  

3 个答案:

答案 0 :(得分:1)

计算平均值:

int average = sum / numbers.length;

所有数字均高于平均值:

for(int x = 0; x < numbers.length; x++) {
   if(numbers[x] > average){
      System.out.println(numbers[x]);
   }
}

小于5的数字:

for(int x = 0; x < numbers.length; x++) {
   if(numbers[x] < 5){
      System.out.println(numbers[x]);
   }
}

请考虑如何在循环中设置大括号。它是这样的:

for (int i = 0; i < x; i++){
  // do stuff
}

答案 1 :(得分:1)

我认为这是一个家庭作业问题所以我不会给你一个直接的代码答案,但试着提供帮助。

System.out.println("Numbers less than 5: ");
for(int x = 0; x < numbers.length && x > 5;) {
    numbers[x] = x + 1;
}

计数for-loop语句通常由三部分组成(以“;”分隔):

  1. 在循环开始之前执行的变量声明,通常是计数变量(在您的情况下为“int x = 0”)
  2. 休息条件,如果确实我们退出循环,这就是你的循环错误的地方(同样你的代码说“x&gt; 5”,这意味着“x大于5”,与你的输出相矛盾的是“少于5”。)
  3. 每次迭代后发生的事情,通常在第一步中定义的count变量中加1(你在当前代码中遗漏了这个)
  4. 当迭代数组并尝试查找符合特定条件的元素(在本例中“数字小于5”)时,您不应该在循环条件中执行此操作(上面的步骤2),如果对于任何条件都是如此数组中的一个数字循环将停止执行。您应该在循环中使用 if -statement检查它。

    for (int x = 0; x < numbers.length; x++) {
        if (/* number is less than 5 */) {
            // print number
        }
    }
    

    现在我们有一个for循环,通过从0开始计算x(for语句的第一部分,“int x = 0”)来遍历整个数组,直到我们到达数组的末尾(第二部分, “x&lt; numbers.length”)步长为1(第三部分,“x ++”。也可写成“x = x + 1”)。在每次迭代中,我们现在可以使用 if -statement检查数组的元素(数字[x])是否小于5,如果是打印它。

答案 2 :(得分:0)

在java 8中,您可以使用lambda表达式来实现与for循环相同但更短的结果。在这里阅读有关lambda表达式的更多信息:Lambda Expressions

Integer[] array = {1,2,3,4,5,6};
int sum = Arrays.stream(array).reduce(0, (a, b) -> a + b);
List<Integer> result = Arrays.stream(array)
                .filter(x -> sum*1.0/array.length <= x && x < 5 )
                .collect(Collectors.toList());