问题描述:
这个程序怎么我用了两种方法,怎么就只能输入一次呢?第二次不能输入了!为什么.好像System.in.read()老是只让程序停一次,帮我看下吧
程序结果是要让输入的一个数字让其每一位上的数字相加并输出
import java.util.*;
class PrintIterator //遍历集合中的元素求出和
{
public static void print(Collection c)
{
int sum=0;
Iterator<Integer> it =c.iterator() ;
while(it.hasNext())
{
sum +=it.next();
}
System.out.println(sum);
}
}
class PutNumber //输入数字,并加入到集合中
{
public static void putnumber(Collection c)
{
while(true)
{
int b=0;
try{b= System.in.read();}catch(Exception e){}
if(b =='\r'||b == '\n')
break;
else
{
int num = b-'0';
c.add(new Integer(num));
}
}
}
}
public class TestCollection
{
public static void main(String [] args){
System.out.println("输入一串数字:");
//用HashSet类来做:
HashSet<Integer> hs = new HashSet();
PutNumber.putnumber(hs);
PrintIterator.print(hs);
//用TreeSet类来做:
TreeSet<Integer> ts = new TreeSet();
PutNumber.putnumber(ts);
PrintIterator.print(ts);
}
}
我知道Scanner方法可以,我想知道为什么rean方法不能呀!
问题解答:
class PutNumber //输入数字,并加入到集合中
{
public static void putnumber(Collection c)
{
try{
while((int b=System.in.read())!=-1){
c.add(new Integer(b));
}
}
catch(IOException e){}
}
}
用scaner方法
“程序结果是要让输入的一个数字让其每一位上的数字相加并输出”
你写的这个程序输出来的结果和你说的不一样