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

奇怪的程序,输入和输出不一致
class   Person
{
static   int   age;
void   shout()
{
System.out.println( "my   age   is   "+age);
}
public   static   void   main(String   []   args)
{

Person   person   =   new   Person();
System.out.print( "请输入年龄: ");
try
{age=System.in.read();
                }catch(Exception   e){}
person.shout();
}
}
自己写了个输入输出的程序,可是不知为什莫输入的数值和输出的数值不一致,是不是哪里有问题,请高手帮忙

以下是命令提示符上的信息:

D:\javawork\lesson3> java   Person
请输入年龄:25
my   age   is   50

D:\javawork\lesson3> java   Person
请输入年龄:67
my   age   is   54

D:\javawork\lesson3> java   Person
请输入年龄:23
my   age   is   50

D:\javawork\lesson3> javac   Person.java

D:\javawork\lesson3> java   Person
请输入年龄:12
my   age   is   49

D:\javawork\lesson3> javac   Person.java

D:\javawork\lesson3> java   Person
请输入年龄:12
my   age   is   49

------解决方案--------------------
因为你读入的ASCII码,并且只读了第一个字符.如12,只读入了1,其ASCII码为49,故输出49.输入67,只读入6.故输出其ASCII码为54.

------解决方案--------------------
System.in.read()读取输入的字符,并返回字符的Unicode码,它是特点或者说成缺点就是只能读一个字符,在你的例子里自然就是第一个数字了
------解决方案--------------------
可以这样哦
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println(br.readLine());