很难从扫描仪获取输入

时间:2017-11-24 04:21:23

标签: java

我的扫描仪似乎没有停止,我想要做的就是从用户那里获得输入,然后在有人打字时停止。我在我的数组列表中添加了一个空格,因为我的数组列表中的信息保存了一个额外的空格,所以我只是在我的文本中添加一个空格。有什么帮助吗?到目前为止我所做的并没有停止。

Scanner scan = new Scanner(System.in);
while (scan.hasNextLine()){

    String line = scan.toString();
    InPlayerNames.add(line+" ");

    if (line.toString().equals("done")) {
        break;
    }
}

4 个答案:

答案 0 :(得分:4)

使用scan.nextLine()而非scan.toString()

扫描仪原样停留在while循环中;在toString()上调用scan只会给出scan对象的文本表示。

答案 1 :(得分:1)

scan.toString()返回扫描的文本表示,即返回内存中的位置,因为toString()方法用于返回调用它的对象的文本表示。

使用scan.nextLine()到处代替scan.toString(),它将在“完成”时停止。

答案 2 :(得分:0)

你正在循环检查你的扫描仪是否有下一行(好),但是当你没有设置线到下一行时。你应该说     String line = scan.nextLine。您目前只在内存中设置扫描位置的行。因此,在if语句中,行永远不等于" done"。

答案 3 :(得分:0)

此代码对我来说非常合适。

package TestPrograms;

import java.util.ArrayList;
import java.util.Scanner;

public class ScannerTest {

    public static void main(String[] args) {

        Scanner scan = new Scanner(System.in);
        System.out.println("Enter the names:");
        ArrayList<String> playernames = new ArrayList<String>();
        while (scan.hasNextLine()){

            String line = scan.nextLine();

            playernames.add(line+" ");

            if (line.equals("done")||(line.equals("Done"))) {
                break;
            }

        }
        System.out.println("Entered names are : ");
        for(String name:playernames) {
            System.out.println(name);

        }


    }

}

您应该使用scan.nextLine()来获取输入,而不是scan.toString()。