初学者问题,请指教

branchsky 2002-07-08 10:40:23
import java.io.*;
public class Class1
{

public static void main (String[] args)
{
try
{
char a='y';
while(a!='n'||a!='N')
{

float num[]=new float[3];
int i;

BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入三门课程的成绩:");

for(i=0;i<num.length;i++)
num[i]=Float.valueOf(br.readLine()).floatValue();

float ave;
ave=(num[0]+num[1]+num[2])/3;

System.out.println("平均成绩:"+ave);
System.out.print("退出否?");
a=(char)System.in.read();
}


}
catch(IOException e){System.err.println(e.toString());}

}
}
运行第一次循环时显示An exception of type'java.lang.NumberFormatException'was not handled
...全文
35 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
北极猩猩 2002-07-09
  • 打赏
  • 举报
回复
num[i]=Float.valueOf(br.readLine()).floatValue();
是这一行可能引起异常,传给valueOf的字符串不是浮点数格式时就会跑出异常
branchsky 2002-07-09
  • 打赏
  • 举报
回复
可是还有问题啊,两个错误都改了,但第一次循环后,照理按"y"会退出啊,可现在反而不行了
branchsky 2002-07-09
  • 打赏
  • 举报
回复
谢谢,我试试
crm2000 2002-07-08
  • 打赏
  • 举报
回复
首先循环条件错了,应该是a!='y'&&a!='Y'
其次由于System.in.read()方法并不是输入个字符它就返回的,需要回车,所以如果按照你的方法就成了空串,改成br.readLine()方法这样就可以过滤掉回车。
char a='n';
while(a!='y'&&a!='Y')
{
float num[]=new float[3];
int i;
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.print("请输入三门课程的成绩:");
for(i=0;i<num.length;i++)
num[i]=Float.valueOf(br.readLine()).floatValue();
float ave;
ave=(num[0]+num[1]+num[2])/3;
System.out.println("平均成绩:"+ave);
System.out.print("退出否?");
a=(char)br.readLine().charAt(0);
}
oceanboywjk 2002-07-08
  • 打赏
  • 举报
回复
如果你不记得那些类的方法调用会抛出什么异常,保险的方法就是catch(Exception),不指定就是catch所有exception啦
pengchy 2002-07-08
  • 打赏
  • 举报
回复
应该在try{}catch{}中抛出NumberFormatException异常

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧