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

谁能给我讲讲这是为什吗?
import java.util.Scanner;

public class BasicType {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner s=new Scanner(System.in);
System.out.println("请输入若干整数");
int sum=0;
String str;
while(s.hasNextInt())
sum+=s.nextInt();
System.out.println(sum);
s.close();
}

}
我回车后怎么结束不了输入啊!!!!!!
s.hasNextInt()何时返回true,何时又返回false!!!!!
我特别想知道:如何输入完数字后,回车,直接打印出sum的值并结束程序!!!!!!
困扰我好久好久!!!!!

------解决方案--------------------
经过测试,回车不会返回true or false.
在回车时应该线程还是暂停的。
应该使用一个确定的值来判断输入完毕,不能根据回车判断。
Scanner s=new Scanner(System.in);
System.out.println("请输入若干整数");
int sum=0;
while (s.hasNext()){
s.next();
System.out.println(sum++);
}
System.out.println(sum);
s.close();
------解决方案--------------------
Java code
import java.util.Scanner;

public class A {

/**
* @param args
*/
      public static void main(String[] args) {
// TODO Auto-generated method stub
           Scanner s=new Scanner(System.in);
           System.out.println("请输入若干整数");
           int sum=0;
           String str;

           while(s.hasNextInt())  //输入非数字结束循环
                sum+=s.nextInt();

           System.out.println(sum);
           s.close();
      }

}

------解决方案--------------------
hasNextInt() : 如果通过使用 nextInt() 方法,此扫描器输入信息中的下一个标记可以解释为指定基数中的一个 int 值,则返回 true。

------解决方案--------------------
探讨

能不能再详细点,线程为何还是暂停的?s.hasNext()什么时候返回true,什么时候返回false。

------解决方案--------------------
Java code
import java.util.Scanner;
public class A {
      public static void main(String[] args) {
           Scanner s=new Scanner(System.in);
           System.out.println("请输入若干整数:");
           int sum=0;
           String str;
           while(s.hasNextInt()){  //输入非数字结束循环
                sum+=s.nextInt();   
              System.out.println("结果:"+sum);
           }
           s.close();
           System.out.println("输入数为非整数字,程序结束!");
      }
}