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

关于这个程序,大家来看看
import java.util.*; 
public class TestVector 

public static void main (String [] args) 

int b=0; 
Vector v=new Vector(); 
System.out.println("please enter number:"); 
while(true) 

try 

b=System.in.read(); 

catch(Exception e) 

System.out.println(e.getMessage()); 

if(b== '\r ' ¦ ¦b== '\n ')//这句代码的作用是什么? 
break; 
else 

int num=b- '0 ';//这句代码的作用是什么? 
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); 

}
问题就在后面的注释地方.不怎么懂.哪个来告诉我啊



------解决方案--------------------

if(b== '\r ' ¦ ¦b== '\n ')//这句代码的作用是什么?
用户输入了一个换行或者回车键

int num=b- '0 ';//这句代码的作用是什么?
如果用户输入一个数字比如9 那么当时b的值为'9'为了取得数字9 减去作为基准值的'0'
那么结果num就是我们想得到的数字9
------解决方案--------------------
if(b=='\r' || b=='\n')
碰到回车符时就结束掉循环。

int num = b - '0',将字符转换成数字。比如输入 '9' 得出的 num 就是 9。
因为 '0' 的 ASCII 值为 48,'9' 的 ASCII 值为 57,内部是按照 int num = 57 - 48 来计算的。
------解决方案--------------------
b=System.in.read(); 返回了一个int型的数据,也就是输入字符的ascii码。
1,同上
2,这里的‘0’是一个字符,也就是char类型,char在java中也就代表ascii码的显示,‘0’ascii为48,这样就是b的ascii-48,得到了一个数值
------解决方案--------------------
if(b== '\r ' ¦ ¦b== '\n ')这是说如果输入了换行或回车时就break;

int num=b- '0 '; 是因为b是System.in.read(); 进来的,这个读进来的是字符,需要进行转换,而b是int型,所以在System.in.read(); 读进来时会把读进来的以ASCII码的形式存储,而int num=b-'0'是先把b换成字符型,这样就是原来输入的数,接着会再把b强制转换成int型.