Java 在构造函数中声明字符串数组

Java 在构造函数中声明字符串数组,java,arrays,Java,Arrays,我试图在构造函数中声明一个字符串数组,但是当我运行代码时,我得到了一个错误,但是调试器没有指出任何东西,当代码不在构造函数中时,代码也可以正常工作。它包括这一部分: String [][] studentdetails = new String [5][3]; 在构造函数中使用student details数组运行代码时出错为: 线程“main”java.lang中出现异常。错误:未解析编译 问题:studentdetails无法解析为变量 studentdetails无法解析为变量stude

我试图在构造函数中声明一个字符串数组,但是当我运行代码时,我得到了一个错误,但是调试器没有指出任何东西,当代码不在构造函数中时,代码也可以正常工作。它包括这一部分:

String [][] studentdetails = new String [5][3];
在构造函数中使用student details数组运行代码时出错为:

线程“main”java.lang中出现异常。错误:未解析编译 问题:studentdetails无法解析为变量 studentdetails无法解析为变量studentdetails 无法解析为变量

在StudentMarksProgram.MarksInput(StudentMarksProgram.java:58)中 StudentMarksProgram.(StudentMarksProgram.java:37)位于 main(StudentMarksProgram.java:119)

import java.util.*;
公共班级学生评分计划{
国际学生总数;
double[]testaverages=新的double[3];
//在此学生详细信息数组中[x][0]是学生编号,[x][1]是学生的名字,[x][2]是学生的姓氏
扫描仪=新的扫描仪(System.in);
专用int[][]标记;
私人双[]学生公寓;
公共学生标记程序(){
//TODO自动生成的构造函数存根
System.out.println(“你们班有多少学生?”);
studentTotal=scanner.nextInt();
分数=新整数[studentTotal][3];
学生平均数=新的双倍[学生总数];
字符串[][]studentdetails=新字符串[studentTotal][3];
//为运行程序和任何子例程而创建的无尽for5555循环

对于(inta=0;a修改代码如下

String [][] studentdetails;
    public StudentMarksProgram() {

    studentdetails = new String [studentTotal][3];
}

正如elliot提到的,studentdetails的作用域在构造函数中。这应该可以解决这个问题。

您不应该在构造函数中声明数组。
尝试在构造函数外部声明它,然后在构造函数内部初始化它

错误是什么?可能会显示更多代码
studentdetails
(声明时)只在构造函数中可见。我添加了更多详细信息和代码不要在构造函数中放置太多代码,应该没有功能,只有实例变量的初始化。因此没有扫描仪和获取用户输入等,这是非常错误的。
    }
    void MarksInput () {
        for (int i=0; i<studentTotal; i++) {
            System.out.println("Enter student number of student " + (i+1) + " : ");
            studentdetails[i][0] = scanner.next();
            System.out.println("Enter the first name of student " + (i+1) + " : ");
            studentdetails[i][1] = scanner.next();
            System.out.println("Enter the surname of student " + (i+1) + " : ");
            studentdetails[i][2] = scanner.next();
            for (int j=0; j<=2;) {
                System.out.println("Enter marks for student " + (i + 1) + " in assessment " + (j +1));
                marks[i][j] = scanner.nextInt();
                if ((marks[i][j] < 41) && (marks[i][j]) >= 0) {
                    j = j +1;
                } else {
                    System.out.println("Invalid marks entered - enter a value between 0 and 40 inclusive");
                }
            }
        }
String [][] studentdetails;
    public StudentMarksProgram() {

    studentdetails = new String [studentTotal][3];
}