【问题标题】:Reading input integer in Java在Java中读取输入整数
【发布时间】:2020-07-27 10:23:39
【问题描述】:

当我运行这个程序时,它不起作用。我可以输入您的姓名、我的出生年份、当年,但在我输入当年之后,它不会显示我的年龄。你能告诉我我的代码有什么问题并解释为什么吗?好像我不明白 Java 中的输入是如何工作的。

package com.company;

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner get_input = new Scanner(System.in);
        System.out.println("Enter your name ");
        String name = get_input.nextLine();


        boolean is_int = false;
        int year_of_birth = 0;
        System.out.println("Enter your year of birth");
        while (!get_input.hasNextInt()) {

            System.out.println("Year invalid");
            System.out.println("Enter your year of birth");
            get_input.next();
        }
        year_of_birth = get_input.nextInt();

        System.out.println("Enter the current year");
        get_input.next();
        int current_year=get_input.nextInt();

        int age = current_year-year_of_birth;

        System.out.println(current_year);
        System.out.println(year_of_birth);
        System.out.println("Your name is " + name + " and you are " + age + " year old.");

        get_input.close();

    }
}

提前致谢

【问题讨论】:

  • 如果你删除了 get_input.next();打印“输入当前年份”后,您的问题应该会消失。我还会在该区域添加错误检查,因为用户可以输入无效的年份。
  • 谢谢艾伯特。我做这个只是为了了解它是如何工作的。我想我真的不明白“.next();”的目的是什么。为什么没有必要?
  • 从扫描器中查找下一个标记关键字。由于代码块没有发生这种情况。这是库参考:docs.oracle.com/javase/8/docs/api/java/util/Scanner.html#next--.
  • 谢谢。如果您将答案作为答案发布,我将对其进行验证。
  • 就这么做了。谢谢。

标签: java input int java.util.scanner


【解决方案1】:

如果您删除 get_input.next();打印“输入当前年份”后,您的问题应该会消失。我还会在该区域添加错误检查,因为用户可以输入无效的年份。

【讨论】:

    【解决方案2】:

    只需删除打印System.out.println("Enter the current year"); 之后的行get_input.next();,代码应该可以工作。

    【讨论】:

    • :) 实际上将您的代码复制到编辑器并在那里查看,当时这篇文章中没有评论。你认为我应该删除它吗?
    • 不,但从我的观点来看,你可能已经复制了他们的信息。如果您尝试解决我的问题,我将不胜感激。
    • 那样会有错误答案和“回答无用投票”的风险,这会降低一个人的声誉。为什么会有人这样做?
    猜你喜欢
    • 2013-06-23
    • 1970-01-01
    • 2014-08-22
    • 2014-08-18
    • 2011-01-31
    • 1970-01-01
    • 2011-08-18
    相关资源
    最近更新 更多