关于这个程序,大家来看看
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型.