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

Java 如何在数组中查找大于、小于或等于某个值的数字?,java,arrays,loops,for-loop,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:"); {

我试图输出小于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]);
   }
}  
{
int[]数字={2,4,6,8,10,12,14,16};
整数和=0;
用于(整数x:数字)
总和+=x;
System.out.println(“顺序中的数字:”);
{
对于(int x=0;x9;)
{number[x]=x+1;}
int x=0;
System.out.println(数字[x]);
}
System.out.println(“小于5的数字:”);
{
对于(int x=0;x5;)
{number[x]=x+1;}
int x=0;
System.out.println(数字[x]);
}
}  
计算平均值:

int average=sum/numbers.length;
高于平均值的所有数字:

for(int x=0;x平均值){
System.out.println(数字[x]);
}
}
少于5个的数字:

for(int x=0;x
请考虑如何将括号设置在循环中。它是这样的:

for (int i = 0; i < x; i++){
  // do stuff
}
for(int i=0;i
我假设这是一个家庭作业问题,所以我不会给你一个直接的代码答案,但无论如何我都会尽力帮助你

System.out.println("Numbers less than 5: ");
for(int x = 0; x < numbers.length && x > 5;) {
    numbers[x] = x + 1;
}
System.out.println(“小于5的数字:”);
对于(int x=0;x5;){
数字[x]=x+1;
}
循环计数语句通常由三部分组成(以“;”分隔):

  • 在循环开始之前执行的变量声明,通常是一个计数变量(在您的例子中为“intx=0”)
  • 一个中断条件,如果它是真的,我们退出循环,这就是你的循环错误的地方(你的代码说“x>5”,意思是“x大于5”,与你的输出“小于5”相矛盾)
  • 每次迭代后发生的事情,通常在第一步中定义的count变量中添加1(在当前代码中缺少此项)
  • 当在数组上迭代并尝试查找与特定条件匹配的元素(在本例中为“数字小于5”)时,不应在循环条件下执行此操作(上面的步骤2),如果对数组中的任何一个数字都是如此,则循环将停止执行。您可能应该在循环中使用if语句来检查这一点

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

    现在我们有一个for循环,它将遍历整个数组,从0开始计算x(for语句的第一部分,“int x=0”),直到我们以1的步长到达数组的末尾(第二部分,“x在java 8中,您可以使用lambda表达式获得与for循环相同的结果,但更短。请在此处阅读有关lambda表达式的更多信息:

    Integer[]数组={1,2,3,4,5,6};
    int sum=Arrays.stream(array).reduce(0,(a,b)->a+b);
    列表结果=数组。流(数组)
    
    .过滤器(x->sum*1.0/array.length我建议将每个任务放在自己的方法中。这将使您的代码更易于创建、阅读和理解。我不熟悉编程,循环对我来说仍然有点棘手,我没有意识到我需要if语句。我也没有想到为平均值初始化一个单独的变量,这会让一切变得更复杂更容易阅读。谢谢你的帮助!你不需要为平均值初始化一个单独的
    int
    。即使你这样做了,我也不知道你为什么要使用
    int
    ,因为这大部分是截断你的平均值。
    System.out.println(“所有八个数字的平均值是:”+(sum/numbers.length)
    可以。虽然没有格式设置。我使用int,因为数组中的数字是整数,不会使用浮点数。她想要平均值,因为比较,并且给出一些计算名称是干净的代码,当然这是一个小的计算,但对于未来,我认为最好从我开始n一小段路;)在OP的代码中,他们意识到除法不应该包含整数结果,因为他们使用
    1.0/8
    而不是
    1/8
    。最好得到实际结果,一个浮点,并有意将其格式化或强制转换为整数,而不是让编译器截断它。我感谢您的解释。I d我不明白循环的各个部分都做了些什么,但你的解释很有道理。我在大学里上了一堂java课,考虑到我对编程知之甚少,这本书有时很难理解。谢谢。
    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());