【问题标题】:#Help. Java code, getting the marks of 5 students and displaying the students who got A using Arrays method#帮助。 Java代码,获取5个学生的分数并使用Arrays方法显示得A的学生
【发布时间】:2026-01-29 04:30:02
【问题描述】:

我有问题。我的任务是编写一个 Java 程序,使用数组方法,接收 5 个学生的分数,然后查找并显示获得 A 级的学生人数。标记为 (60,56,78,99,92.5)。获得 A 级的标准是 80 分及以上。

我的代码中的一切都很顺利,除了最后一条语句: System.out.println("学生人数"+count);

这是我的代码:

import javax.swing.JOptionPane;

public class Q2 {

 public static void main(String [] args) {

    double[] marks = new double[6];
    int numbers = 1;

    // This is for asking input
    for (int i = 0; i < marks.length; i++,numbers++) {
        String marksString = JOptionPane.showInputDialog (null,
                "Enter the marks for student "+numbers+": ");

        marks[i] = Double.parseDouble(marksString);

        int count = 0;
        if(marks[i] >= 80.0) {
            count++;
        }
    }
    System.out.println("The number of students "+count); 
 }

}

我的代码中的一切都很顺利,除了最后一条语句: System.out.println("学生人数"+count);

我收到一个错误:

线程“主”java.lang.RuntimeException 中的异常:无法编译 源代码 - 错误的树类型:

有没有人可以解释和纠正我的错误? :D

【问题讨论】:

标签: java arrays netbeans runtimeexception


【解决方案1】:

您在for 循环中错误地声明了count。结果,它在循环之外无法访问(因此编译错误),此外,它在循环的每次迭代中都被覆盖为 0,这意味着它的值始终为 0 或 1(在退出循环之前) ),而不是正确的计数。

将其移出循环:

double[] marks = new double[6];
int numbers = 1;
int count = 0;
// This is for asking input
for (int i = 0; i < marks.length; i++,numbers++) {
  String marksString = JOptionPane.showInputDialog (null,
      "Enter the marks for student "+numbers+": ");
  marks[i] = Double.parseDouble(marksString);
  if(marks[i] >= 80.0) {
    count++;
  }
}
System.out.println("The number of students who got A is " + count); 

【讨论】:

  • "学生人数"+count -> "得A的学生人数:"+count...
【解决方案2】:
public class Q2 {

public static void main(String [] args) {

double[] marks = new double[6];
int numbers = 1;
int count = 0;

// This is for asking input
for (int i = 0; i < marks.length; i++,numbers++) {
    String marksString = JOptionPane.showInputDialog (null,
            "Enter the marks for student "+numbers+": ");

    marks[i] = Double.parseDouble(marksString);

    if(marks[i] >= 80.0) {
        count++;
    }
}
System.out.println("The number of students "+count); 
}

}

您的错误是您在循环内初始化计数,并且在每次迭代中,编译器都会将值 0 分配给您的计数。将其置于循环之上。

【讨论】:

    【解决方案3】:

    您已在循环内声明并初始化了 count 变量。因此,您将无法访问该 for 循环外的 count 变量。而且每次当循环继续计数变量将分配给 0。这是您已经完成的两个错误。

    import javax.swing.JOptionPane;
    
    public class Demo {
    
    public static void main(String [] args) {
    
    double[] marks = new double[6];
    int numbers = 1;
    int count=0;
    // This is for asking input
    for (int i = 0; i < marks.length; i++,numbers++) {
        String marksString = JOptionPane.showInputDialog (null,
                "Enter the marks for student "+numbers+": ");
    
        marks[i] = Double.parseDouble(marksString);
    
        //int count = 0;
        if(marks[i] >= 80.0) {
            count++;
        }
      }
     System.out.println("The number of students "+count); 
     }
    
      } 
    

    您应该在 for 循环之外声明 count 变量。

    【讨论】: