Java 如何检查数组并从中计算数字?

Java 如何检查数组并从中计算数字?,java,arrays,Java,Arrays,我有一个数组,里面写满了学生的分数。但是,我无法显示数组内容,因为我一直在接收参考代码或其他内容。我现在尝试检查数组中的每个索引,并将其与40的及格分数进行比较。如果我真的使用了if语句,我以后再也无法打印[I],我们将不胜感激 public class Exammarks { public static void main(String[] args) { int i = 0; int [] studentmarks = new int[] {45,60

我有一个数组,里面写满了学生的分数。但是,我无法显示数组内容,因为我一直在接收参考代码或其他内容。我现在尝试检查数组中的每个索引,并将其与40的及格分数进行比较。如果我真的使用了if语句,我以后再也无法打印[I],我们将不胜感激

public class Exammarks {
    public static void main(String[] args) {
        int i = 0;
        int [] studentmarks = new int[] {45,60,70,21,95,35,83,80,5,41,40,25};
        for(i=1;i < studentmarks.length; i++); {
                if (studentmarks[i] < 40)
                       System.out.println(studentmarks[i]);
        }

    }

}
公共类Exammarks{
公共静态void main(字符串[]args){
int i=0;
int[]学生分数=新int[]{45,60,70,21,95,35,83,80,5,41,40,25};
对于(i=1;i
尝试为每个循环使用

int [] studentmarks = new int[] {45,60,70,21,95,35,83,80,5,41,40,25};
System.out.println("studentmarks size = " + studentmarks.length);
for(int marks : studentmarks) {
      System.out.println("marks = " + marks); 
      if (marks < 40)
           System.out.println("marks less than 40 = " + marks);

}
int[]studentmarks=newint[]{45,60,70,21,95,35,83,80,5,41,40,25};
System.out.println(“studentmarks size=“+studentmarks.length”);
对于(整数分数:学生分数){
System.out.println(“marks=“+marks”);
如果(分数<40)
System.out.println(“小于40的分数=”+分数);
}

数组
索引从
0
开始,而您已从
1
初始化
循环的

 int [] studentmarks = {45,60,70,21,95,35,83,80,5,41,40,25};
 for(i=0;i < studentmarks.length; i++) 
 {
    if (studentmarks[i] < 40)
    {
       System.out.println(studentmarks[i]);
    }
 }

通过从数组中创建
,过滤掉小于40的数字,或者根据需要将流转换回数组,或者只打印结果,您可以更轻松地完成此操作。例如:

int [] studentmarks = new int[] {45,60,70,21,95,35,83,80,5,41,40,25};
Arrays.stream(studentmarks)
      .filter(m -> m < 40)
      .toArray();
// [21, 35, 5, 25]
int[]studentmarks=newint[]{45,60,70,21,95,35,83,80,5,41,40,25};
Arrays.stream(studentmarks)
.过滤器(m->m<40)
.toArray();
// [21, 35, 5, 25]
或者,如果您只需要打印结果:

Arrays.stream(studentmarks)
      .filter(m -> m < 40)
      .forEach(System.out::println);
Arrays.stream(studentmarks)
.过滤器(m->m<40)
.forEach(System.out::println);

Related:“我一直收到一个参考代码或其他东西”-你能说得更准确些吗?向我们展示错误代码以及预期和实际输出(或发生的任何错误)。@dave[I@677327b6这就是我在尝试打印LN(studentmarks[I])时得到的结果;它还显示了这个错误:线程“main”中出现异常java.lang.ArrayIndexOutOfBoundsException:12引用代码可能是数组在内存中的位置。您需要编写一个toString()方法来解决这个问题。或者只需将print语句更改为
System.out.println(“+studentmarks[i]”)
为什么要定义
i=0
然后从
i=1
开始?谢谢,我想我不明白为什么我不能在没有字符串的情况下自己打印数组。以前我尝试使用i打印数组,但将其分配给变量似乎很有效。非常感谢。您可以尝试使用
List
…更容易understand@PolyApe“我想我不明白为什么我不能在没有字符串的情况下自己打印数组”你当然可以。“以前我尝试使用I自己打印数组,但将其分配给变量似乎有效。”没什么区别,这不是原因。@user1803551你要输入一些建议还是做一个难对付的用户?@PolyApe我已经告诉过你问题的确切位置。你是真的要调试你的程序还是只是等待别人为你写代码?看看
peek
流操作。你正在创建另一个流。您的响应是多余的。您已经创建了一个筛选结果数组(您甚至没有缓存它),然后用相同的操作创建另一个流。我给出了两个不同的答案。第一个答案是他需要一个结果集数组,第二个答案是打印结果集。好的,我编辑了这个问题以更好地反映这一点。
Arrays.stream(studentmarks)
      .filter(m -> m < 40)
      .forEach(System.out::println);