Java程序两次输入

时间:2018-12-12 01:39:17

标签: java java.util.scanner

所以下面是我的代码。我试图使用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

3 个答案:

答案 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());
    }
}