【问题标题】:Java Variable counter increasing using loop statements使用循环语句增加 Java 变量计数器
【发布时间】:2017-02-25 00:55:50
【问题描述】:

我需要编写一个程序,使用来自 4 个用户的 4 个输入来找到见面的最佳时间。每个用户将根据他们的最佳时间输入 1、2 或 3。 1 为 8:00-12:00,2 为 12:00-18:00,3 为 18:00-23:00。在程序结束时,它将显示输入最多的时间,或者如果两次输入的数量相等,则显示最早的时间。在这里,我不确定真正要使用什么,起初我想使用很长的一系列 if 语句,但这在这里真的行不通。我倾向于使用 while 语句,但我不知道如何有效地使用它们,然后从用户那里获取输入并根据该输入(如果是 1、2 或 3)将其添加到计数器,然后用于查看点击次数最多的时间。任何帮助,将不胜感激! 我应该对所有输入都使用一个变量吗?

    Scanner kbd=new Scanner(System.in);

    System.out.print("Meeting Times: \n"+"1) 8:00-12:00 2) 12:00-18:00 3) 18:00-23:00\n");
    System.out.print("\nChoose options 1, 2, or 3.\n");

    int p, morning=0, noon=0, evening=0;
    String first = "8:00-12:00", second="12:00-18:00",third="18:00-23:00";

    while (p>4){
        System.out.print("Enter the best time available for person 1.");
        p=kbd.nextInt();
        morning++;
    }kbd.close();

【问题讨论】:

    标签: java loops if-statement while-loop


    【解决方案1】:

    p > 4 背后的逻辑是什么?如果您确定需要输入 4 个人,则可以使用简单的for 循环。

    for (int i = 0; i < 4; i++) {
        System.out.print("Enter the best time available for person " + (i+1) + ".");
        p=kbd.nextInt();
        if (p == 1) morning++;
        else if (p == 2) noon++;
        else if (p == 3) evening++;
    }
    

    请注意,您也可以简单地提示用户输入人数,将其作为 int 并相应地替换循环条件。

    为了获得最大值,我们可以使用Math.max,但是,它只需要两个输入值,所以我们必须调用它两次:

    int max = Math.max(morning, Math.max(noon, evening));
    

    那么我们最终可以给用户一个响应;

    if (max == morning)  System.out.println("Morning is the way to go!");
    else if (max == noon) System.out.println("Noon is the way to go!");
    else System.out.println("Evening is the way to go!");
    

    如果您愿意,您可以添加功能,例如,如果给定输入无效(例如 String 或不在范围内的数字),则请求新输入,但这可能超出您的范围.

    【讨论】:

    • 这正是我所需要的,我没有意识到我使用了错误的 for 循环。我的初始代码使用morning 而不是用户输入,因为我认为这是需要设置条件的。在以与您相同的方式使用 for 循环之后,我能够让程序完全按照我的需要运行。非常感谢!
    猜你喜欢
    • 2017-06-27
    • 1970-01-01
    • 2013-11-25
    • 2012-04-12
    • 2013-05-11
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多