所以下面是我的代码。我试图使用Scanner类从控制台读取输入,然后在单独的行上打印出每个标记。但是存在一个小问题,用户必须输入两次。代码下方给出了一个示例,说明发生了什么
import java.util.Scanner;
public class StringSort {
public static void main(String args[]) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a string: ");
String str = scanner.nextLine();
int i = 0;
while (i< str.length()) {
i++;
System.out.println("" + scanner.next());
}
scanner.close();
}
}
示例:
Enter a string:
what is love
what is love
what
is
love
答案 0 :(得分:2)
要执行您想做的事情使用Scanner类从控制台读取输入,然后在单独的行上打印每个令牌,您可以使用String::split
方法
String str = scanner.nextLine();
String [] arr = str.split (" ");
for (String x : arr) {
System.out.println (x);
}
答案 1 :(得分:0)
上述代码的更有效实现如下:
Scanner sc = new Scanner(System.in);
while (sc.hasNext()) {
System.out.println(sc.next());
}
这将避免使用@ScaryWombat
所占用的额外空间答案 2 :(得分:0)
Scanner
应该适当关闭:
try (Scanner sc = new Scanner(System.in)) {
while (sc.hasNext()) {
System.out.println(sc.next());
}
}