scanner system.in useDelimiter疑问

pcmlose 2012-05-23 05:09:52

import java.util.Scanner;

public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
sc.useDelimiter(",");
while (sc.hasNext()) {
System.out.println(sc.next());
}
sc.close();
}
}



输入 1,2,3,4,5
结果是
1
2
3
4

最后那位怎么不见了

...全文
162 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
pcmlose 2012-05-23
  • 打赏
  • 举报
回复
不是已经按回车来确定我输入的字符串了吗,这应该可以确实我要输入的内容吧?

import java.util.Scanner;


public class Test {
public static void main(String[] args)
{
Scanner scan=new Scanner(System.in);
while(scan.hasNext()){
System.out.println(scan.next());
}

}
}



那为什么我输入 1 2 3 4 5 //5后面没有空格
输出的结果是
1
2
3
4
5
而换了分隔符却不行,难道回车里含了空格,回车应该是\n\r吧?
andycpp 2012-05-23
  • 打赏
  • 举报
回复
当Scanner从System.in中读数据时,调用next()或hasnext()时,如果没数据了,系统会陷入等待,等你从键盘录入。换句话说,你把hasnext()写到while循环里,程序一定会因为数据不足而陷入停顿的

Scanner从System.in中读数据,要么你明确的知道你会输入几个数据,就调用几个next()
要么你读入一行,再对这行进行分解,例如:
        Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
Scanner Scanner = new Scanner(s);
Scanner.useDelimiter(",");
while(Scanner.hasNext()) {
System.out.println(Scanner.next());
}
pcmlose 2012-05-23
  • 打赏
  • 举报
回复
那怎么解释TXT的结果
brightyq 2012-05-23
  • 打赏
  • 举报
回复
5后面要加,
pcmlose 2012-05-23
  • 打赏
  • 举报
回复


import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Scanner;

public class Test {
public static void main(String[] args) throws FileNotFoundException {
Scanner sc = new Scanner(
new BufferedReader(new FileReader("12345.txt")));
sc.useDelimiter(",");
while (sc.hasNext()) {
System.out.println(sc.next());
}
sc.close();
}
}


12345.txt里的内容是
1,2,3,4,5

则输出
1
2
3
4
5

62,634

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧