![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
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");
} 展开
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");
} 展开
3个回答
展开全部
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你可以直接输出看看就直到了!
展开全部
你好, 这是一个编程习惯问题,为了保证不抛空指针异常,在for循环之前都对要循环的对象进行非空判断。如:
if(zongfen.length > 0){
for(int i=0;i<zongfen.length-1;i++){...}
}
if(zongfen.length > 0){
for(int i=0;i<zongfen.length-1;i++){...}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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]);
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]);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询