关于java的Scanner的hasNext()的疑问?
publicbooleanhasNext()返回true假如这个扫描器在输入时有另外的标记,在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。importja...
public boolean hasNext()
返回true假如这个扫描器在输入时有另外的标记,在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。
import java.util.*;
public class SetTest
{
public static void main(String[] args)
{
Set<String> words = new HashSet<>(); // HashSet implements Set
long totalTime = 0;
Scanner in = new Scanner(System.in);
while (in.hasNext())
{
String word = in.next();
long callTime = System.currentTimeMillis();
words.add(word);
callTime = System.currentTimeMillis() - callTime;
totalTime += callTime;
}
Iterator<String> iter = words.iterator();
for (int i = 1; i <= 20 && iter.hasNext(); i++)
System.out.println(iter.next());
System.out.println(". . .");
System.out.println(words.size() + " distinct words. " + totalTime + " milliseconds.");
}
}
没看懂in.hasNext为什么总不是false,API文档没看懂怎么用,求解。。。。。 展开
返回true假如这个扫描器在输入时有另外的标记,在等待要扫描的输入时,此方法可能阻塞。扫描器将不执行任何输入。
import java.util.*;
public class SetTest
{
public static void main(String[] args)
{
Set<String> words = new HashSet<>(); // HashSet implements Set
long totalTime = 0;
Scanner in = new Scanner(System.in);
while (in.hasNext())
{
String word = in.next();
long callTime = System.currentTimeMillis();
words.add(word);
callTime = System.currentTimeMillis() - callTime;
totalTime += callTime;
}
Iterator<String> iter = words.iterator();
for (int i = 1; i <= 20 && iter.hasNext(); i++)
System.out.println(iter.next());
System.out.println(". . .");
System.out.println(words.size() + " distinct words. " + totalTime + " milliseconds.");
}
}
没看懂in.hasNext为什么总不是false,API文档没看懂怎么用,求解。。。。。 展开
2015-10-26
展开全部
Scanner in = new Scanner(System.in);
用在命令行的输入,不需要判断hasNext
用在命令行的输入,不需要判断hasNext
追问
我不是想问如何改程序,而是想知道什么时候hasNext会返回false,难道一直都是返回true吗?API文档的内容我没看懂。在我的测试中,hasNext是会等待用户输入的,作为一个判断的方法,还会等待用户输入,不奇怪吗?
我不是想问如何改程序,而是想知道什么时候hasNext会返回false,难道一直都是返回true吗?API文档的内容我没看懂。在我的测试中,hasNext是会等待用户输入的,作为一个判断的方法,还会等待用户输入,不奇怪吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询