提问人:B612 提问时间:11/24/2022 最后编辑:JonasB612 更新时间:5/23/2023 访问量:119
如何使用 hasNext() 和 next() 方法
How to use the hasNext() and next() methods
问:
我的目标是将单词与标准输入分开读取和打印,而不必将它们存储在数组或列表中。
我想要这个:
输入:日月云
输出: 日月云(每个字在不同的行中)
以下程序在打印“云”后继续等待。我不知道问题出在哪里
`
import java.util.Scanner;
class RandomWord{
public static void main(String[] args){
String palavra;
Scanner s = new Scanner(System.in);
while(s.hasNext()){
palavra = s.next();
System.out.println(palavra);
}
}
}
`
答:
1赞
Marek Borecki
11/24/2022
#1
您持续读取扫描仪。 您必须通过扫描仪循环读取。例如,调用 s.next() 3 次。 或者创建一些循环结束条件,例如文本“END”。
如果在一行中传递所有单词,请使用 .readLine()
评论
0赞
f1sh
11/24/2022
在此方案中,何时关闭输入流?
1赞
Marek Borecki
11/24/2022
没有干净的方法可以做到这一点。唯一的方法是使脏,例如,对某些特定字符串进行闭合循环
1赞
Marek Borecki
11/24/2022
将逻辑保留在 ifs 中并比较 Strings 不利于 OOP 目的。例如,如果用户传递“END”字符串,则此代码可以从循环中退出,或者它可能只是结束循环,或者 3 调用 s.next()
1赞
Marek Borecki
11/24/2022
@f1sh什么是OP代码?
1赞
access violation
11/24/2022
OP = 原始海报。在这个问题中,用户 B612。
0赞
Reilas
5/22/2023
#2
如果正在等待用户输入,则对 the 的调用将阻止。Scanner.hasNext
当您希望用户连续输入时,它很有用。
以下是完成任务的方法。
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String[] strings = s.nextLine().split(" +");
for (String string : strings)
System.out.println(string);
}
输出
sun
moon
cloud
这些名称在 Java 上下文中有些复杂。hasNext
next
迭代器也使用此术语,作为从源收集数据的一种方式。
这里的区别在于它是动态工作的,而像迭代器这样的东西在静态上下文中工作,并且已经有了值。Scanner
评论