使用scanner类读取Java中的字符串输入问题

时间:2013-08-30 13:36:24

标签: java

对于Java来说,我几乎是一个完整的新手。我在Python和VB.net中涉猎过一点,就是这样。

我正在尝试在java中编写一个程序,它直接读取用户的输入并使用以下代码将其显示回来:

import java.util.Scanner;

public class InputTesting
{   
    public static void main( String[] args )
    {
        Scanner input = new Scanner ( System.in );

        String str1;

        System.out.println("Input string: ");

        str1 = input.nextString();

        System.out.println( str1 );
    }
}

我收到错误:

InputTesting.java:13: error: cannot find symbol
        str1 = input.nextString();
                    ^
  symbol:   method nextString()
  location: variable input of type Scanner
1 error

有人能说出它为什么没有编译吗?谢谢!

4 个答案:

答案 0 :(得分:10)

input.nextString();

nextString类中没有名为Scanner的方法。这就是为什么你收到错误cannot find symbol

尝试

input.nextLine(); // If you're expecting the user to hit enter when done.
input.next(); // Just another option.

答案 1 :(得分:0)

import java.util.Scanner;

public class InputTesting
{   
    public static void main( String[] args )
    {
        Scanner input = new Scanner ( System.in );

         String str1;

        System.out.println("Input string: ");

            str1 = input.next();

        System.out.println( str1 );
    }
}

答案 2 :(得分:0)

您可以使用Scanner javadoc中详述的input.nextXXX()之一。解决编译器错误

在你的情况下

您可以使用input.nextLine();获取整行文字。

默认情况下扫描仪使用的空白分隔符。但是,如果需要扫描由分隔符useDelimiter分隔的输入序列,可用于设置正则表达式分隔

public static void main(String[] args) {
    try (Scanner input = new Scanner(System.in);) {
        input.useDelimiter(";");
        while (input.hasNext()) {
            String next = input.next();
            if ("DONE".equals(next)) {
                break;
            }
            System.out.println("Token:" + next);
        }
    }
}

输入

1a;2b;3c;4d;5e;DONE;

输出

Token:1a
Token:2b
Token:3c
Token:4d
Token:5e

扫描十进制和有符号数时要小心,因为扫描是Locale依赖

答案 3 :(得分:0)

您需要使用方法nextLine()。此方法打印整行。使用next(),它只会在您的句子中打印一个单词。