[英]Creating a Grade Calculator using a 2D Array
我在理解如何编写程序方面遇到困难。 该程序应该看起来像这样:
Number of students: 3
Number of exams : 3
Enter student's data (first name follow by exam scores):
Joe 85 88 93
Mike 90 100 97
Bill 50 68 73
Name E1 E2 E3 Grade
Joe 85 88 93 88.666666666667
Mike 90 100 97 95.666666666667
Bill 50 68 73 63.666666666664
我正在学习Java课程,因此本周我刚刚学习了Arrays。
到目前为止,我的代码看起来像这样。
import java.util.Scanner;
public class GradeCalcWithArrays {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int students = 0;
int exams = 0;
System.out.println("Number of students: ");
students = s.nextInt();
String names[] = new String[students];
System.out.println("Number of exams: ");
exams = s.nextInt();
int scores[][] = new int[students][exams];
for (int i, j = 0;;) {
System.out
.println("Enter student's data (first name followed by exams scores):");
String studentnames = s.nextLine();
studentnames = names[3];
int e1 = s.nextInt();
e1 = scores[0][0];
int e2 = s.nextInt();
e2 = scores[0][2];
int e3 = s.nextInt();
e3 = scores[0][3];
}
}
}
我希望为这些阵列提供一些帮助。 我认为我正在尝试输入一些内容。 但是一旦我到达了我的老师说的双数组,我将无所适从,我不知道如何输入数组。 任何帮助深表感谢。
到目前为止,我的程序的输出是:
Number of students: 3
Number of exams: 3
Enter student's data (first name follow by exam scores):
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 3
at GradeCalcWithArrays.main(GradeCalcWithArrays.java:25)
如果这也是如何提供帮助的一个因素,我正在使用Eclipse。
数组索引从0开始。由于name
是一个可容纳3个元素的String
数组,因此有效索引从0-2开始。 您尝试在name[3]
存储一个String
( studentnames
),这是无效的位置。 因此,您将获得ArrayOutOfBounds
异常。
因此,您的代码应为:
import java.util.Scanner;
public class GradeCalcWithArrays {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int students = 0;
int exams = 0;
System.out.println("Number of students: ");
students = s.nextInt();
String names[] = new String[students];
System.out.println("Number of exams: ");
exams = s.nextInt();
int scores[][] = new int[student][exams];
for (int i = 0;i<students; i++) {
System.out.println("Enter student "+ i+1 +" data (first name followed by exams scores):");
names[i] = s.nextLine();
for(int j=0;j<exams;j++)
{
scores[i][j] = s.nextInt();
}
}
//Rest of your code to print the table goes here
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.