} //当错误的输入时 请输入人数: 2 2 请输入学生信息: 0015 male 99 请输入学生信息: 0016 female 77 学生信息如下: 姓名:0015性别:0015成绩:15.0 姓名:0016性别:0016成绩:16.0 最大值为:16.0 最大值为:15.0 Process completed. //当正确输入时 请输入学生信息: xiaomiao male 78 Exception in thread "main" java.lang.NumberFormatException: For input string: "xiaomiao" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:447) at java.lang.Integer.parseInt(Integer.java:497) at Demo.main(Demo.java:26) Process completed.
数据转化错误,Integer.parseInt(); xiaomiao是字符类型。
从Exception in thread "main" java.lang.NumberFormatException: For input string: "xiaomiao"这条异常信息来看可能是 mystring=bur.readLine(); number=Integer.parseInt(mystring);
import java.util.Scanner;
public class Student{ // 定义一个学生类 该类包括学生姓名 性别 成绩三个属性
private String name;
private String sex;
private float score;
public Student(){
}
public Student(String name,String sex,float score){
this.name=name;
this.sex=sex;
this.score=score;
}
public String getName(){
return name;
}
public String getSex(){
return sex;
}
public float getScore(){
return score;
}
public void getMax(int length, Student [] std){//获取最高分的方法
float max;
max=std[0].getScore();
for(int i=0;i<length;i++){
if(std[i].getScore()>max){
max=std[i].getScore();
}
System.out.println("最大值为:"+max);
}
}
public void getMin(int length,Student [] std){ //获取最低分的方法
float min;
min=std[0].getScore();
for(int i=0;i<std.length;i++){
if(std[i].getScore()<min){
min=std[i].getScore();
}
}
System.out.println("最小值为:"+min);
}
public void Delete(int length,Student []std){ // 删除某个学生信息的方法
int index=0,i=0;
length--;
System.out.println("请输入要删除的学生姓名:");
Scanner S=new Scanner(System.in);
String name=S.next();
for(;i<length;i++){
if(name==std[i].getName())
index=i;break;
}
if(i<length){
for( i=index;i<length;i++){
std[i]=std[i+1];
}
}
else
System.out.println("你忽悠我啊!");
}
public void Add(int length,Student []std){ //增加某个学生信息的方法
int index=0 ,i=0;
length++;
Scanner S=new Scanner(System.in);
System.out.println("请输入要添加的学生的信息:");
String name=S.next();
String sex=S.next();
float score=S.nextFloat();
Student goodboy=new Student(name,sex,score);
for(;i<length;i++){
if(goodboy.getScore()>std[i].getScore())
index=i;break;
}
if(i==length-1){
std[length]=goodboy;
}
else{
for( i=length-1;i>=index;i--){
std[i+1]=std[i];
}
std[i]=goodboy;
}
}
public void reSearch(int length,Student []std){ //查找某个学生信息的方法
Scanner S=new Scanner(System.in);
System.out.println("请输入要查找到学生姓名:");
String name=S.next();
for(int i=0;i<length;i++){
if(std[i].getName()==name){
System.out.println("改学生的具体信息如下:");
std[i].disPlay();
}
else
System.out.println("查无此人!");
}
}
public void Change(int length,Student []std){ //更改某个学生信息的方法
Scanner S=new Scanner(System.in);
System.out.println("请输入你要更改的学生姓名");
String name1=S.next();
for(int i=0;i<length;i++){
if(std[i].getName()==name){
String name=S.next();
String sex=S.next();
float score=S.nextFloat();
std[i]=new Student(name,sex,score);
}
}
}
public void Sort(int length ,Student []std){ //按照成绩降序来排序
int i,j;
Student jack=new Student();
for(i=0;i<length;i++){
for(j=0;j<length-1-i;j++){
if(std[j].getScore()<std[j+1].getScore())
jack=std[j];
std[j]=std[j+1];
std[j+1]=jack;
}
}
}
public void disPlay(){ // 输出函数
System.out.println("姓名:"+name+"性别:"+sex+"成绩:"+score);
}
}
大家好啊 我还有个问题咯
我定义了一个学生类Student 并且用测试类来进行有关的操作 代码如下
运行结果在最下面 请给我解释下好不?? (io法和jdk两种输入偶都试过了!)
//Student类
public class Student{
private String name;
private String sex;
private double score;
public Student(String name,String sex,double score){
this.name=name;
this.sex=sex;
this.score=score;
}
public void setName(String name){
this.name=name;
}
public String getName(){
return this.name;
}
public void setSex(String sex){
this.sex=sex;
}
public String getSex(){
return this.sex;
}
public void setScore(double score){
this.score=score;
}
public double getScore(){
return score;
}
public void disPlay(){
System.out.println("姓名:"+this.name+"性别:"+this.sex+"成绩:"+this.score);
}
}
Demo类
import java.io.*;
public class Demo{
public static void main(String [] args)throws IOException{
String mystring;
int number;
BufferedReader bur=new BufferedReader(new InputStreamReader(System.in));
System.out.println("请输入人数:");
mystring=bur.readLine();
number=Integer.parseInt(mystring);
Student []std=new Student[number];
System.out.println(std.length);
for(int i=0;i<std.length;i++){
System.out.println("请输入学生信息:");
String name;
String sex;
double score;
name=bur.readLine();
sex=bur.readLine();
mystring=bur.readLine();
score=Integer.parseInt(mystring);
std[i]=new Student(name,sex,score);
}
System.out.println("学生信息如下:");
for(int i=0;i<std.length;i++){
std[i].disPlay();
}
double min,max;
min=max=std[0].getScore();
for(int i=0;i<std.length;i++){
if(std[i].getScore()>max){
max=std[i].getScore();
}
}
System.out.println("最大值为:"+max);
for(int i=0;i<std.length;i++){
if(std[i].getScore()<min){
min=std[i].getScore();
}
}
System.out.println("最大值为:"+min);
}
}
//当错误的输入时
请输入人数:
2
2
请输入学生信息:
0015
male
99
请输入学生信息:
0016
female
77
学生信息如下:
姓名:0015性别:0015成绩:15.0
姓名:0016性别:0016成绩:16.0
最大值为:16.0
最大值为:15.0
Process completed.
//当正确输入时
请输入学生信息:
xiaomiao
male
78
Exception in thread "main" java.lang.NumberFormatException: For input string: "xiaomiao"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:447)
at java.lang.Integer.parseInt(Integer.java:497)
at Demo.main(Demo.java:26)
Process completed.
xiaomiao是字符类型。
mystring=bur.readLine();
number=Integer.parseInt(mystring);
转换时出了问题,你输入的“xiaomiao”为字符串,不能转换为整型
public void Sort(int length ,Student []std){ //按照成绩降序来排序
int i,j;
Student jack=new Student();
for(i=0;i <length;i++){
for(j=0;j <length-1-i;j++){
if(std[j].getScore() <std[j+1].getScore())
jack=std[j];
std[j]=std[j+1];
std[j+1]=jack; }
}
}