日期:2014-05-20  浏览次数:20793 次

新手提问 关于try的2个小问题(有关读入字符的)
1,我的意思是读取一个字符,然后判断是不是y,如果是y的话,就进入getage函数
import   java.io.*;
public   class   student   {
public   static   void   main(String   args[]){
stu   s=new   stu();
System.out.println( "想修改年龄?y/n ");
char   c= '   ';
try{
c=(char)System.in.read();
if(c== 'y ')   {s.getage();System.out.println( "好了 ");System.exit(1);}
else   {System.out.println( "已退出 ");System.exit(1);}
}catch(IOException   e){}
}
}
class   stu
{
void     getage()
{
int   age;
String   s= " ";
try{
BufferedReader   in=new   BufferedReader(new   InputStreamReader(System.in));
s=in.readLine();
age=Integer.parseInt(s);
}catch(IOException   e){}
}
}

错误提示是:
Exception   in   thread   "main "   java.lang.NumberFormatException:   For   input   string:   " "
at   java.lang.NumberFormatException.forInputString(Unknown   Source)
at   java.lang.Integer.parseInt(Unknown   Source)
at   java.lang.Integer.parseInt(Unknown   Source)
at   stu.getage(student.java:23)
at   student.main(student.java:9)

2,如果将上面代码的char   c改成String   c,然后在try里面用BufferReader进来一串字符,假设是 "abc ",如果用if(c== "abc ")   s.getage();判断的话,将什么都不发生,为什么?

------解决方案--------------------
age=Integer.parseInt(s);
================================
你的s这个时候仍然是 " ",所以转化出错。

if(c== "abc ")
===================================
c== "abc "是一个错误,应该是 "abc ".equals(c).如果你要是比较内容的话.