【问题标题】:System.out.print() reads Scanner incorrectlySystem.out.print() 读取 Scanner 错误
【发布时间】:2018-09-24 01:56:36
【问题描述】:

我试图为我的一个课程编写这个程序,但我的输出遇到了问题。它应该读取我为Scanner 输入的任何内容。但是,输出跳过了第一个单词,我不确定为什么。您可以忽略 main 方法中的大部分变量声明。这些仅对程序的其余部分有用。

public static void main(String[] args) {

    String fullName;
    int anniversaryM;
    int anniversaryY;
    int periodHours;

    String jobTitle;
    double payRate;
    int monthsWorked;
    double vacationHours;
    double grossPay;
    double retirement;
    double taxWithholding;
    double netPay;

    Scanner in = new Scanner(System.in); 

    fullName = inputLine(in, "Enter your full name:");
    System.out.print(fullName);
}

public static double inputNumber(Scanner input, String prompt) {

    Scanner in = new Scanner(System.in);

    in.nextDouble();
    return in.nextDouble();
}

public static String inputLine(Scanner input, String prompt) {

    Scanner in = new Scanner(System.in); 

    System.out.println(prompt);
    in.next();
    return in.next();
}

public static double calcPercentage(double grossPay, double retirement) {

    Scanner in = new Scanner(System.in);

    in.nextDouble();
    return in.nextDouble();
}

输出:

输入您的全名:
约翰·多伊
能源部

【问题讨论】:

    标签: java input output java.util.scanner system.out


    【解决方案1】:

    你有一个双重呼叫in.next()。只需将其删除,您应该就可以了。此外,请注意您将 Scanner 传递给该方法,因此您不应在该方法中创建新的:

    public static String inputLine(Scanner input, String prompt) {
        System.out.println(prompt);
        return input.nextLine();
    }
    

    【讨论】:

    • 使用该方法时,它只打印出“John”,而不是完整的“John Doe”。
    • @NicholasSandore 如果你想允许输入有空格,你应该使用nextLine 而不是next。请参阅我编辑的答案。
    • 这似乎行得通!自从我刚开始大学一年级以来,我对 Java 完全是个业余爱好者,所以我为缺乏基本知识而道歉。非常感谢!
    【解决方案2】:

    我认为你的问题是in.next(); return in.next();。在这种情况下,它会调用读者两次,如果你想返回 in.next(); 的值,你应该把它放在一个容器中并返回那个容器,或者直接去 return in.next();

    【讨论】:

      猜你喜欢
      • 2015-05-18
      • 1970-01-01
      • 2012-12-25
      • 2013-04-19
      • 2010-11-30
      • 2017-01-18
      • 1970-01-01
      相关资源
      最近更新 更多