import java.util.*;
public class array
{ public static void main(String[] args)
{
int num;
int i;
Scanner scanner = new Scanner(System.in);
do{
System.out.println("请输入全班人数:");
num=scanner.nextInt();
}
while (num<=0);
int[][] grade=new int[num][2];
for(i=0;i<num;i++);
{for(int j=0;j<=1;j++)
{
switch(j) {
case 0:
System.out.println("请输入第"+(i+1)+"位同学的学号");
break;
case 1:
System.out.println("请输入第"+(i+1)+"位同学的Java成绩");
break;
}
grade[i][j]=scanner.nextInt();
}
}
System.out.println("所有同学成绩输入完毕。");
System.out.println("各位同学的java成绩如下:");
System.out.println("序号 学号 Java成绩");
for(i=0;i<num;i++);
{
System.out.print(i+1);
for(int j=0;j<=1;j++)
{
System.out.print(" "+grade[i][j]+" ");
}
System.out.println("");
}
}
}
你这不是报出了数组下标越界的异常吗?你的数组都越界了,当然就不会运行了
首先呢,你知道你为什么一输入10,就叫你输入第11位的成绩么,是因为你的代码里第一个for循环下面有个 ; 这个分号就是第一个for的语句,所以
第一个for执行完了,此时i也就等于10le,所以叫你输入11。但是你的数组是10行3列的,最多只能是grade[9][1]所以越界。这没考虑其他方面
而且你的j为什么要小于1?问题太多,一个for就能输入完所有的成绩。
import java.util.Scanner;
public class array {
public static void main(String[] args) {
int num;
int i;
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入班级人数:");
if ((num = scanner.nextInt()) > 0)
break;
}
int[][] grade = new int[num][2];// 鉴于用数组,除了字符串类型是无法同时存储两个数据的(学号跟成绩),那就第一列是学号第二列是成绩吧
for (i = 0; i < num; i++) {
for (int j = 0; j <= 1; j++) {
switch (j) {
case 0:
System.out.println("请输入第" + (i + 1) + "位同学的学号");
break;
case 1:
System.out.println("请输入第" + (i + 1) + "位同学的Java成绩");
break;
}
grade[i][j] = scanner.nextInt();
}
}
System.out.println("所有同学成绩输入完毕。");
System.out.println("各位同学的java成绩如下:");
System.out.println("序号\t学号\tJava成绩");
for (i = 0; i < num; i++) {
System.out.print(i + 1);
for (int j = 0; j <= 1; j++) {
System.out.print("\t" + grade[i][j]);
}
System.out.println("");
}
scanner.close();// 记得关闭
}
}
稍微改了下