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];
}