首页 新闻 会员 周边

java的疑问

0
悬赏园豆:50 [已解决问题] 解决于 2014-04-18 15:53

根据教程写了一个class。运行之后与预期的结果不一致。怀疑是\t的问题。请大神们看一眼

/**
 * Created by rabbit on 2014-4-15.
 */
import java.util.*;
public class A5_18 {
    public static void main(String[] args){
        Scanner in=new Scanner(System.in);
        System.out.println("请输入学生的数量");
        int renshu=in.nextInt();//接收学生的数量
        System.out.println("请输入科目的数量");
        int kemuNUM=in.nextInt();//接收科目的数量
        String[] name=new String[renshu];//创建存储学生名字的数组
        String[] kemu=new String [kemuNUM];//创建存储科目名字的数组
        int [][] number= new int[renshu][kemuNUM];//创建存储学生成绩的数组
        int [] sum=new int[renshu];//创建存储学生成绩总分的数组
        int [] avg=new int[renshu];//创建存储学生平均成绩的数组
        String[] arr=new String[renshu];//创建
        for(int i=0;i<kemuNUM;i++)//循环输入课程的名称
        {
            System.out.println("请定义第"+(i+1)+"门课程的名字");
            kemu[i]=in.next();
        }
        for(int i=0;i<renshu;i++)//循环输入学生名字的名称
        {
            int S=0;
            System.out.println("请输入第"+(i+1)+"个人的名字");
            name[i]=in.next();
            String arr11="";

            for(int j=0;j<kemuNUM;j++){//循环输入学生的成绩
                System.out.println("请输入"+(name[i])+kemu[j]+"成绩");
                number[i][j]=in.nextInt();
                S+=number[i][j];
                arr11+=number[i][j]+"\t";
            }
            sum[i]=S;
            avg[i]=S/kemuNUM;
            arr[i]=name[i]+"\t"+arr11+sum[i]+"\t"+avg[i];
        }
        for (int i=0;i<sum.length-1;i++){
            for(int j=0;j<sum.length-1;j++){
                if (sum[j]<sum[j+1]){
                    int t1=sum[j];      String t2=arr[j];
                    sum[j]=sum[j+1];    arr[j]=arr[j+1];
                    sum[j+1]=t1;        arr[j+1]=t2;
                }
            }
        }
        System.out.print("学生");
        for(int i=0;i<kemu.length;i++){

            System.out.print("\t"+kemu[i]);
        }
        System.out.print("\t总分\t平均分\t排名");
        System.out.println();
        for (int i=0;i<renshu;i++){
            System.out.println(arr[i]+"\t"+"第"+(i+1)+"名");
        }
    }
}

输出结果为

学生 语文 数学 英语 总分 平均分 排名
流星 78 98 88 264 88 第1名
刘  89 79 87 255 85 第2名

输出结果不能对齐

liupengcheng的主页 liupengcheng | 初学一级 | 园豆:124
提问于:2014-04-18 15:43
< >
分享
最佳答案
0

在命令行里是这样的。多输几个/t试试,数字后面输出两个/t

收获园豆:50
cgfun | 菜鸟二级 |园豆:226 | 2014-04-18 15:46

谢谢

liupengcheng | 园豆:124 (初学一级) | 2014-04-18 16:11
其他回答(1)
0

/**
* Created by rabbit on 2014-4-15.
*/
import java.util.*;
public class A5_18 {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
System.out.println("请输入学生的数量");
int renshu=in.nextInt();//接收学生的数量
System.out.println("请输入科目的数量");
int kemuNUM=in.nextInt();//接收科目的数量
String[] name=new String[renshu];//创建存储学生名字的数组
String[] kemu=new String [kemuNUM];//创建存储科目名字的数组
int [][] number= new int[renshu][kemuNUM];//创建存储学生成绩的数组
int [] sum=new int[renshu];//创建存储学生成绩总分的数组
int [] avg=new int[renshu];//创建存储学生平均成绩的数组
String[] arr=new String[renshu];//创建
for(int i=0;i<kemuNUM;i++)//循环输入课程的名称
{
System.out.println("请定义第"+(i+1)+"门课程的名字");
kemu[i]=in.next();
}
for(int i=0;i<renshu;i++)//循环输入学生名字的名称
{
int S=0;
System.out.println("请输入第"+(i+1)+"个人的名字");
name[i]=in.next();
String arr11="";

for(int j=0;j<kemuNUM;j++){//循环输入学生的成绩
System.out.println("请输入"+(name[i])+kemu[j]+"成绩");
number[i][j]=in.nextInt();
S+=number[i][j];
arr11+=number[i][j]+"\t"+"\t";
}
sum[i]=S;
avg[i]=S/kemuNUM;
arr[i]=name[i]+"\t"+arr11+sum[i]+"\t"+"\t"+avg[i]+"\t";
}
for (int i=0;i<sum.length-1;i++){
for(int j=0;j<sum.length-1;j++){
if (sum[j]<sum[j+1]){
int t1=sum[j]; String t2=arr[j];
sum[j]=sum[j+1]; arr[j]=arr[j+1];
sum[j+1]=t1; arr[j+1]=t2;
}
}
}
System.out.print("学生");
for(int i=0;i<kemu.length;i++){

System.out.print("\t"+kemu[i]);
}
System.out.print("\t总分\t平均分\t排名");
System.out.println();
for (int i=0;i<renshu;i++){
System.out.println(arr[i]+"\t"+"第"+(i+1)+"名");
}
}
}

liupengcheng | 园豆:124 (初学一级) | 2014-04-18 15:52
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册