java代码哪里错了,输出总有一个null

Scannerin=newScanner(System.in);System.out.println("请输入学生人数");intrenshu=in.nextInt();... Scanner in=new Scanner(System.in);
System.out.println("请输入学生人数");
int renshu=in.nextInt();
System.out.println("请输入课目数");
int ke=in.nextInt();
String []kemu=new String[ke];
for(int i=0;i<ke;i++){
System.out.println("请定义第"+(i+1)+"门课");
kemu[i]=in.next();
}
//成绩输入
int zongfen1=0;
String w="";
int[]zongfen=new int[renshu];
int [][] chengji=new int[renshu][ke];
String []name=new String[renshu];
String []z=new String[renshu]; //总数据,数组定义
for(int i=0;i<renshu;i++){
System.out.println("姓名");
name[i]=in.next();
z[i]+=name[i]+"\t";
for(int j=0;j<ke;j++){

System.out.println(name[i]+"的"+kemu[j]+"成绩");
chengji[i][j]=in.nextInt();
w+=chengji[i][j];
zongfen[i]=zongfen[i]+chengji[i][j];//总分
z[i]+=chengji[i][j]+"\t";
}

}

for(int i=0;i<zongfen.length-1;i++){
for(int j=0;j<zongfen.length-1;j++){
if(zongfen[j]<zongfen[j+1]){
String aa;
int bb=0;
aa=z[j]; bb=zongfen[j];
z[j]=z[j+1]; zongfen[j]=zongfen[j+1];
z[j+1]=aa; zongfen[j+1]=bb;
}
}
}

// 排版
System.out.print("姓名");
for(int i=0;i<ke;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.print(z[i]+zongfen[i]+"\t"+(zongfen[i]/renshu)+"\t"+"第"+(i+1)+"名"+"\n");

}
展开
 我来答
汐日南莘
推荐于2016-11-09 · TA获得超过1.4万个赞
知道大有可为答主
回答量:1.6万
采纳率:45%
帮助的人:7902万
展开全部
import javax.swing.*;
import java.util.*;
public class TEST
{
public static Scanner input;
public static void main (String[] args) 
{
Scanner in=new Scanner(System.in);
      System.out.println("请输入学生人数");
      int renshu=in.nextInt();
      System.out.println("请输入课目数");
      int ke=in.nextInt();
      String []kemu=new String[ke];
      for(int i=0;i<ke;i++){
       System.out.println("请定义第"+(i+1)+"门课");
       kemu[i]=in.next();
      }
      //成绩输入
      int zongfen1=0;
      String w="";
      int[]zongfen=new int[renshu];
      int [][] chengji=new int[renshu][ke];
      String []name=new String[renshu];
      String []z=new String[renshu];   //总数据,数组定义
      for(int k=0;k<z.length;k++)
       z[k]="";//使z[]为空不是null
      for(int i=0;i<renshu;i++){
       System.out.println("姓名");
       name[i]=in.next();
       z[i]+=name[i]+"\t";
       for(int j=0;j<ke;j++){
        System.out.println(name[i]+"的"+kemu[j]+"成绩");
        chengji[i][j]=in.nextInt();
        w+=chengji[i][j];
        zongfen[i]=zongfen[i]+chengji[i][j];//总分
        z[i]+=chengji[i][j]+"\t";
       }

}

for(int i=0;i<zongfen.length-1;i++){
       for(int j=0;j<zongfen.length-1;j++){
        if(zongfen[j]<zongfen[j+1]){
        String aa;
        int bb=0;
        aa=z[j];   bb=zongfen[j];
        z[j]=z[j+1];  zongfen[j]=zongfen[j+1];
        z[j+1]=aa;   zongfen[j+1]=bb;
        }
       }
      }
      
      // 排版 
      System.out.print("姓名");
      for(int i=0;i<ke;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.print(z[i]+zongfen[i]+"\t"+(zongfen[i]/renshu)+"\t"+"第"+(i+1)+"名"+"\n");
       
      }
}
}

 就是在定义了z字符串数组后要使z字符串为空就行了,因为下面有z字符串的相加。

所以加了个

 for(int k=0;k<z.length;k++)
              z[k]="";//使z[]为空不是null
追问
定义初始化后本来不就为空吗,能详细说不下吗
追答
定义初始化后是null你可以直接输出看看就直到了!
tianlanyijiu1
2013-10-21 · TA获得超过195个赞
知道小有建树答主
回答量:294
采纳率:100%
帮助的人:152万
展开全部
你好, 这是一个编程习惯问题,为了保证不抛空指针异常,在for循环之前都对要循环的对象进行非空判断。如:
if(zongfen.length > 0){
for(int i=0;i<zongfen.length-1;i++){...}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小小豆士
2013-10-20 · 超过15用户采纳过TA的回答
知道答主
回答量:142
采纳率:0%
帮助的人:43.5万
展开全部
System.out.println("姓名");
name[i]=in.next();
z[i]="";//用之前可以先给个空值;
System.out.println(z[i]);//z[i]没有给赋值,默认初始化null
z[i]+=name[i]+"\t";//这个会变成null+name[i]
System.out.println(z[i]);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式