01 package test.exception;
02
03 import java.util.Scanner;
04
05 public class TestScanner {
06
07 public static void main(String[] args) {
08 String csv = "Sue,5,true,3";
09 Scanner scanner = new Scanner(csv);
10 scanner.useDelimiter(",");
11 //scanner.next();
12 while(scanner.hasNextInt()) {
13 int age = scanner.nextInt();
14 System.out.println(age);
15 }
16
17 }
18 }为什么这个代码没有任何显示,如果加入11行的代码则显示结果为5
02
03 import java.util.Scanner;
04
05 public class TestScanner {
06
07 public static void main(String[] args) {
08 String csv = "Sue,5,true,3";
09 Scanner scanner = new Scanner(csv);
10 scanner.useDelimiter(",");
11 //scanner.next();
12 while(scanner.hasNextInt()) {
13 int age = scanner.nextInt();
14 System.out.println(age);
15 }
16
17 }
18 }为什么这个代码没有任何显示,如果加入11行的代码则显示结果为5
楼主【songstone】截止到2008-07-11 10:33:26的历史汇总数据(不包括此帖):
发帖的总数量:3 发帖的总分数:300 每贴平均分数:100
回帖的总数量:2 得分贴总数量:0 回帖的得分率:0%
结贴的总数量:3 结贴的总分数:300
无满意结贴数:0 无满意结贴分:0
未结的帖子数:0 未结的总分数:0
结贴的百分比:100.00% 结分的百分比:100.00%
无满意结贴率:0.00 % 无满意结分率:0.00 %
敬礼!
如果通过使用 nextInt() 方法,此扫描器输入信息中的下一个标记可以解释为指定基数中的一个 int 值,则返回 true。
也就是说,你下一个标记如果是整数才会返回true。而你不用11行的代码的时候,他的下一行是Sue,这个不是整数,所以返回false,当然就不能打印了。而你使用了next之后,再调用hasNextInt(),明显这次就是整数5了,所以这里会打印出来。不过这里只会打印一个5出来,后面的就不会打印了。 因为true又会导致hasNextInt返回false。