我在使用Java中的扫描器读取字符串输入时遇到问题

问题描述 投票:0回答:2

我在读取字符串时遇到问题,扫描仪读取了Integerdouble,并且显示了输出,但未读取string

我需要您的帮助。

public static void main(String[] args) {

    Scanner scan = new Scanner(System.in);
    int i = scan.nextInt();
    double d=scan.nextDouble();
    String s=scan.nextLine();

    scan.close();
    System.out.println("String: " + s);
    System.out.println("Double: " + d);
    System.out.println("Int: " + i);

}

}

java string java.util.scanner
2个回答
0
投票

使用nextLine()代替nextInt()nextDouble()。检查Scanner is skipping nextLine() after using next() or nextFoo()?了解更多信息。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int i = Integer.parseInt(scan.nextLine());
        double d = Double.parseDouble(scan.nextLine());
        String s = scan.nextLine();

        System.out.println("String: " + s);
        System.out.println("Double: " + d);
        System.out.println("Int: " + i);
    }
}

示例运行:

10
20
a
String: a
Double: 20.0
Int: 10

0
投票

短吗?请勿致电nextLine-它的操作方式令人困惑。

如果要读取字符串,请改用next()。如果您希望整个行而不是一个字的价值,请将扫描仪更新为在“行模式”而不是“空间模式”下工作:

Scanner scan = new Scanner(System.in);
scan.useDelimiter("\r?\n");

 // and now use as normal:

 int i = scan.nextInt();
 double d=scan.nextDouble();
 String s=scan.next();

这使扫描仪最多扫描换行符,这有点令人费解;在Windows上,它们是\r\n,但在其他OS上,它们只是\n,因此为什么我们指定:可选\r,然后是必需的\n

© www.soinside.com 2019 - 2024. All rights reserved.