java 我看看这个小 程序

来源:百度知道 编辑:UC知道 时间:2024/06/18 22:57:45
当我输出123的时候为什么不出来6 而是-29
import java.util.*;
class TestVector {
public static void main(String [] args)
{ int b=0;
Vector v=new Vector();
System.out.print("please Enter Number:");
while(true)
{
try{
b= System.in.read();
}catch(Exception e)
{e.printStackTrace();}

if(b=='r'||b=='\n')
break;
else
{
int num=b-48;
v.addElement(new Integer(num));
}
}
int sum=0;
Enumeration e=v.elements();
while(e.hasMoreElements())
{
Integer intobj=(Integer)e.nextElement();
sum+=intobj.intValue();
}
System.out.println("sum:"+sum);

}
}

你是在Windows平台编译的吧,看你的程序判断输入结束的条件:

if(b=='r'||b=='\n')

即输入字母r或者换行符,则代表结束,Windows平台,一旦你按回车键,其实是输入了 \r\n,而\r符的ASCII码为13,如果之前输入的为123,对应的ASCII码为49、50,51.那么最后相加的结果是(49-48)+(50-48)+(51-48)+(13-48)=-29。
我猜想,你判断条件的那一行,应该是笔误,少写了一个\符:

if(b=='\r'||b=='\n')

这个程序的目的是干什么?