我有一个程序,用户输入多个等级并存储到数组中,然后由程序用来计算各种值。
我正在使用多种方法,所以我想定义一个所有方法都可以引用的静态数组,并保持等级。但是我希望它的长度等于输入的等级数。
public class GradeStatistics {
static int numGrades, sum = 0;
static int[] grades = new int[numGrades];
public static void main(String args[]){
readGrades();
calcSum();
readGrades()
方法找出会有多少等级并将其分配给numGrades
public static void readGrades(){
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of grades: ");
numGrades = input.nextInt();
在定义静态数组之前,有没有办法让用户输入成绩数?
答案 0 :(得分:3)
您可以定义静态数组,但不能初始化它:
static int[] grades;
然后你可以调用readGrades()
方法并初始化其中的grades
数组:
public static void readGrades(){
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of grades: ");
numGrades = input.nextInt();
grades = new int[numGrades];
}
答案 1 :(得分:0)
当声明时,您不会被迫初始化字段。初始化可以在之后进行,并且变量可以重新初始化任意次。所以你只需要
static int[] grades; // declaration. The field is implicitely initialized to null.
public static void readGrades(){
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of grades: ");
int numGrades = input.nextInt();
grades = new int[numGrades]; // initialization
请注意,我将numGrades
作为局部变量而不是静态字段。没有理由将它变成静态字段。使用grades.length
可以获得成绩数量。
答案 2 :(得分:0)
在声明成绩数组时,您不必分配它。
static int[] grades;
然后在你阅读nr成绩时分配它。
public static void readGrades(){
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of grades: ");
numGrades = input.nextInt();
grades = new int[numGrades];
答案 3 :(得分:0)
我会像这样实现readGrades
方法
public static int[] readGrades(){
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of grades: ");
numGrades = input.nextInt();
int[] grades = new int[numGrades];
// read the grades
return grades;
}
因为如果名为readGrades
的方法也返回某些内容,它会更直观和封装。
答案 4 :(得分:0)
你可以在静态方法中初始化数组:readGrades
像这样:public class GradeStatistics {
static int numGrades, sum = 0;
static int[] grades = null;
public static void main(String args[]){
readGrades();
calcSum();
}
public static void readGrades(){
Scanner input = new Scanner(System.in);
System.out.print("Enter the number of grades: ");
numGrades = input.nextInt();
grades = new int[numGrades];
}
}
答案 5 :(得分:0)
声明你这样的成绩
static int[] grades = null;
并初始化如下的等级。
public static void readGrades(){
numGrades = input.nextInt();
grades =new int[numGrades];
}