[题目:
编写一个输入人员信息并存储到内存的程序,输入部分可参考InputFromConsole类,人员信息包括name, sex, age.并且依据age对人员列表重新升序排序。]
_______________________________________________________
下面这个是我自己写的,程序能够正常运行,但执行后,在输入第一个名字的时候就出错了,还请各位帮忙修改一下,是什么地方的问题,谢谢咯~~~~
______________________________________________________import java.util.Scanner;public class PersonMessage {
String[] Name= null;
String[] Sex = null;
int[] Age = null;
public void InputFormConsole(){ //录入信息
for(int i=0; ; i++){
System.out.print("请输入名字:");
Scanner scname= new Scanner(System.in);
String name = scname.next();
Name[i] = name;
System.out.print("请输入性别:");
Scanner scsex= new Scanner(System.in);
String sex = scsex.next();
Sex[i] = sex;
System.out.print("请输入年龄:");
Scanner scage = new Scanner(System.in);
int age = scage.nextInt();
Age[i] = age;
System.out.print("是否继续录入:(Y/N)");
Scanner scInput = new Scanner(System.in);
String Input = scInput.next();
if (Input.equals("Y")){ //判断是否继续录入信息
PersonMessage r = new PersonMessage();
r.InputFormConsole(); //继续录入信息
}else {
PersonMessage r1 = new PersonMessage();
r1.OrderAge(); //转到age排序
}//
}
}
public void OrderAge(){
String NameTemp,SexTemp;
int AgeTemp; //年龄升序排列
for(int i=0; i<Age.length; i++){
for(int j=i ;j<Age.length-1; j++){ //排序
if(Age[j+1] > Age[j]){
AgeTemp = Age[j+1];
Age[j+1] = Age[j];
Age[j] = AgeTemp;
NameTemp = Name[j+1];
Name[j+1] = Name[j];
Name[j] = NameTemp;
SexTemp = Sex[j+1];
Sex[j+1] = Sex[j];
Sex[j] = SexTemp;
}
}
}
for(int k=Age.length ;k >= 0 ; k-- ){
System.out.println("姓名:"+Name[k]+",性别:"+Sex[k]+",年龄:"+Age[k]);
}
}
/**
* @param args
*/
public static void main(String[] args) {
PersonMessage Person =new PersonMessage();
Person.InputFormConsole();
}}
编写一个输入人员信息并存储到内存的程序,输入部分可参考InputFromConsole类,人员信息包括name, sex, age.并且依据age对人员列表重新升序排序。]
_______________________________________________________
下面这个是我自己写的,程序能够正常运行,但执行后,在输入第一个名字的时候就出错了,还请各位帮忙修改一下,是什么地方的问题,谢谢咯~~~~
______________________________________________________import java.util.Scanner;public class PersonMessage {
String[] Name= null;
String[] Sex = null;
int[] Age = null;
public void InputFormConsole(){ //录入信息
for(int i=0; ; i++){
System.out.print("请输入名字:");
Scanner scname= new Scanner(System.in);
String name = scname.next();
Name[i] = name;
System.out.print("请输入性别:");
Scanner scsex= new Scanner(System.in);
String sex = scsex.next();
Sex[i] = sex;
System.out.print("请输入年龄:");
Scanner scage = new Scanner(System.in);
int age = scage.nextInt();
Age[i] = age;
System.out.print("是否继续录入:(Y/N)");
Scanner scInput = new Scanner(System.in);
String Input = scInput.next();
if (Input.equals("Y")){ //判断是否继续录入信息
PersonMessage r = new PersonMessage();
r.InputFormConsole(); //继续录入信息
}else {
PersonMessage r1 = new PersonMessage();
r1.OrderAge(); //转到age排序
}//
}
}
public void OrderAge(){
String NameTemp,SexTemp;
int AgeTemp; //年龄升序排列
for(int i=0; i<Age.length; i++){
for(int j=i ;j<Age.length-1; j++){ //排序
if(Age[j+1] > Age[j]){
AgeTemp = Age[j+1];
Age[j+1] = Age[j];
Age[j] = AgeTemp;
NameTemp = Name[j+1];
Name[j+1] = Name[j];
Name[j] = NameTemp;
SexTemp = Sex[j+1];
Sex[j+1] = Sex[j];
Sex[j] = SexTemp;
}
}
}
for(int k=Age.length ;k >= 0 ; k-- ){
System.out.println("姓名:"+Name[k]+",性别:"+Sex[k]+",年龄:"+Age[k]);
}
}
/**
* @param args
*/
public static void main(String[] args) {
PersonMessage Person =new PersonMessage();
Person.InputFormConsole();
}}
解决方案 »
- 本人 打算去北京的传智博客培训,想在去之前连接下那的情况
- java开发大型网站(流量大,数据大(上万G数据))用什么架构?
- 急急急,一个网站如何给其他系统提供自己的接口?
- Java程序用JXL.JAR包的类写数据到EXCEL文件后,我再次写入后,就覆盖了上一次的写入的数据.怎样才能不覆盖上一次写的数据,而从后面接着写呢?谢谢
- DWR LIST裝換問題
- 关于数据库查询行列互换
- EJB的概念问题
- 请问各位为什么要整合tomcat+apache?
- ejbFindByPrimaryKey的疑问
- httpclient求助
- 小鸟:第一个Servlet怎么写
- 小鸟:怎么样速成j2ee?难道就是做jsp网页么?
程序我没试,但我看到
String[] Name= null;
这样做的话还是没有初始化数组Name啊,没有这种形式初始化数组的,
应该会报空指针错误。
这样试试String[] name=new String[1000000];
1. String[] Name= null;
String[] Sex = null;
int[] Age = null;
这样第一数组后,没有初始化数组,导致在输入后出现空指针异常
2. for(int k=Age.length;k >= 0 ; k-- ){
System.out.println("姓名:"+Name[k]+",性别:"+Sex[k]+",年龄:"+Age[k]);
}
循环从int k=Age.length开始,会出现索引越界异常,数组中最大的下标索引为 Age.length-1
String[] Name= new String[100];
String[] Sex = new String[100];
int[] Age = new int[100];
.
.
.
.
. .
.
.
.
for(int k=Age.length-1 ;k >= 0 ; k-- ){
System.out.println("姓名:"+Name[k]+",性别:"+Sex[k]+",年龄:"+Age[k]);
}
}
----------------------
感谢各位的帮助!!!照你们指出的错误,我改正了一下,现在能够解决最开始的那个不能录入信息的问题了.
不过在输出显示的时候就像下面这样,一连串的NULL.不知道是那儿又出错了.
还请大家帮忙再看看
----------------------请输入名字:小兵
请输入性别:男
请输入年龄:25
是否继续录入:(Y/N)Y
请输入名字:李五
请输入性别:20
请输入年龄:22
是否继续录入:(Y/N)N
姓名:null,性别:null,年龄:0
姓名:null,性别:null,年龄:0
姓名:null,性别:null,年龄:0
姓名:null,性别:null,年龄:0
姓名:null,性别:null,年龄:0
姓名:null,性别:null,年龄:0
姓名:null,性别:null,年龄:0
姓名:null,性别:null,年龄:0
姓名:null,性别:null,年龄:0
姓名:null,性别:null,年龄:0
.
.
.
.
.