我创建了一个接受用户输入的程序,并将存储在2d数组中。例子情况,用户输入semester = 2的输入;那么当然也不是= 2;我的循环工作正常,但数据存储不好。
输出: 空值 空值 空值 输入4
它应该是这样的: 输入1 输入2 输入3 input4
这是我的代码:
BufferedReader inData = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("Enter no of semester : ");
data = inData.readLine();
noSem = Integer.parseInt(data);
// Semester loop
for(int i = 0; i < noSem; i++) {
System.out.println("\n\tSemester" + (i + 1));
System.out.print("Enter number of course : ");
data = inData.readLine();
noCourse = Integer.parseInt(data);
// course details loop
for(int u = 0; u < noCourse; u++) {
System.out.println("Enter Course Code : ");
System.out.print("Enter Course Name : ");
sbjName = new String[noSem][noCourse];
sbjName[i][u] = inData.readLine();
System.out.println("Enter Credit Hour : ");
System.out.println("Enter Marks : ");
System.out.println("\n");
}
}
for(int x = 0; x < noSem; x++) {
for(int y = 0; y < noCourse; y++) {
System.out.println(sbjName[x][y]);
}
}
}
答案 0 :(得分:2)
BufferedReader inData = new BufferedReader(new InputStreamReader(System.in));
try {
System.out.print("Enter no of semester : ");
int noSem = Integer.parseInt(inData.readLine());
String[][] sbjName = new String[noSem][];
// Semester loop
for (int i = 0; i < noSem; i++) {
System.out.println("\n\tSemester" + (i + 1));
System.out.print("Enter number of course : ");
int noCourse = Integer.parseInt(inData.readLine());
sbjName[i] = new String[noCourse];
// course details loop
for (int u = 0; u < noCourse; u++) {
System.out.println("Enter Course Code : ");
System.out.print("Enter Course Name : ");
sbjName[i][u] = inData.readLine();
System.out.println("Enter Credit Hour : ");
System.out.println("Enter Marks : ");
System.out.println("\n");
}
}
for (int x = 0; x < sbjName.length; x++) {
for (int y = 0; y < sbjName[x].length; y++) {
System.out.println(sbjName[x][y]);
}
}
}
答案 1 :(得分:1)
你的问题在这里:
sbjName = new String[noSem][noCourse];
该语句在每次迭代期间创建一个 new 数组。换句话说:你丢弃了之前创建的数组;因此,您先前存储在这些阵列中的任何信息......都会被丢弃!
您只想一次;所以你将它移动到你的循环之外
。答案 2 :(得分:0)
问题似乎是每次进行第一次for循环时都要重新创建2d数组。
要解决此问题,您需要在开头定义可用课程的数量:
TheDates Records
--------------------
2016-09-23 120
2016-09-30 157
...etc