【问题标题】:I want to make Java count from one input integer to another, printing weekdays我想让Java从一个输入整数计数到另一个,打印工作日
【发布时间】:2021-02-04 19:21:53
【问题描述】:

首先,我对 Java 完全陌生,我知道这对你们大多数人来说可能真的很容易。但现在我坚持锻炼。我几乎疯狂地用谷歌搜索,但我找不到任何有用的提示来解决这个特定问题。否则我真的不知道要搜索什么。

我有一段代码如下所示:

导入 java.util.Scanner;

公开课周{

public static void main(String[] args) { 扫描仪输入 = new Scanner(System.in);

System.out.println("Type a number: ");
int day = input.nextInt();

if (day == 1) {
  System.out.println("Monday ");
}
if (day == 2) {
  System.out.println("Tuesday ");
}
if (day == 3) {
  System.out.println("Wednesday ");
}
if (day == 4) {
  System.out.println("Thursday ");
}
if (day == 5) {
  System.out.println("Friday ");
}
if (day == 6) {
  System.out.println("Saturday ");
}
if (day == 7) {
  System.out.println("Sunday");
}

} }

正如您所看到的,该程序会提示用户输入一个数字,如果该数字介于 1-7 之间,则该程序将回答相应的星期几。然而,我现在想做的是修改代码以启动计数器或循环或其他东西。我想让它从我的输入数字到指定的中断计数 +1。假设我输入 2,程序会打印:Tuesday,Wednesday, Thursday, Friday 然后让它停止。

我只是真正地涉足了,while,if 语句等,但我知道某处有关键。在玩的过程中,我只成功地让程序打印了 2 五次,或者让我输入无穷大的数字。

任何帮助将不胜感激!

【问题讨论】:

  • Let's say I type 2, and the program would print: Tuesday, Wednesday, Thursday, Friday and then make it stop. - 为什么只达到Friday,而不达到Sunday
  • 这就是重点,我想指定程序何时停止我想要循环的天数的循环。如果我以现在的形式运行程序,我可以输入 4,它会回答:“星期四”。我想做的是有一个程序,我会在其中输入 1,它会用我所有的 if 语句循环回答:“星期一,星期二,星期三,星期四,星期五,星期六,星期日。你现在明白了吗? ? 我也想测试休息时间,所以我可以让它停在假设 4 而不是经历所有 7

标签: java loops switch-statement counter


【解决方案1】:

我会使用switch-case 来完成,当我希望程序打印特定的一天时,我会使用break,它会在执行匹配的case 后打破 switch-case 块。如果 break 没有在一个 case 中使用,则执行将通过剩余的 case 直到找到 break 或块结束。

为了继续重复执行此操作,我将使用无限循环 (while(true) { }),可以根据业务逻辑使用 break 语句打破该循环。

请注意,我还使用Integer.parseInt(input.nextLine()) 而不是input.nextint() 来避免here 描述的问题。

演示:

import java.util.Scanner;

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

        System.out.println("+=+=+ Menu +=+=+");
        System.out.println("A. Show a specific day");
        System.out.println("B. Show all days starting from the specific day");
        System.out.println("C. Exit");
        String choice;
        while (true) {
            System.out.print("Enter your choice: ");
            choice = input.nextLine().toUpperCase();
            if ("C".equals(choice)) {
                System.out.println("Good bye!");
                break;
            }

            System.out.print("Type a number: ");
            int day = Integer.parseInt(input.nextLine());

            if ("A".equals(choice)) {
                switch (day) {
                case 1:
                    System.out.println("Monday ");
                    break;
                case 2:
                    System.out.println("Tuesday ");
                    break;
                case 3:
                    System.out.println("Wednesday ");
                    break;
                case 4:
                    System.out.println("Thursday ");
                    break;
                case 5:
                    System.out.println("Friday ");
                    break;
                case 6:
                    System.out.println("Saturday ");
                    break;
                case 7:
                    System.out.println("Sunday");
                    break;
                }
            } else if ("B".equals(choice)) {
                switch (day) {
                case 1:
                    System.out.println("Monday ");
                case 2:
                    System.out.println("Tuesday ");
                case 3:
                    System.out.println("Wednesday ");
                case 4:
                    System.out.println("Thursday ");
                case 5:
                    System.out.println("Friday ");
                case 6:
                    System.out.println("Saturday ");
                case 7:
                    System.out.println("Sunday");
                }
            }
        }
    }
}

示例运行:

+=+=+ Menu +=+=+
A. Show a specific day
B. Show all days starting from the specific day
C. Exit
Enter your choice: A
Type a number: 4
Thursday 
Enter your choice: B
Type a number: 4
Thursday 
Friday 
Saturday 
Sunday
Enter your choice: C
Good bye!

【讨论】:

    【解决方案2】:

    您可以只创建一个 DAYS[] 数组,然后从该特定索引到最后遍历该数组。

    String DAYS[] = {"Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"};
    
    System.out.println("Type a number: ");
    int day = input.nextInt();
    
    if(day >= 1 && day <= 7) {
      for(int i = day - 1; i < DAYS.length; i++) {
          System.out.println(DAYS[i]);
       }
    }
    else
       System.out.println("Enter a valid number");
    

    如果您想通过获取停止索引来停止,逻辑将是相同的。只需将for 循环中的DAYS.length 替换为您想要的stop index

    【讨论】:

      【解决方案3】:

      由于您目前正在学习,因此我会为您指出一些线索来照亮前进的道路,而不是给出答案。

      首先要解决一个问题,你必须清楚地定义它是什么。我们将假设低于 1 或高于 7 的数字不在范围内。 我知道您需要输入两个数字:开始日期和结束日期。您已经知道如何存储第一个。 第二个是相同的过程。但是有一个问题! Scanner.nextInt() 使用在控制台中输入的数字,而不是您用来验证值的数字。您必须找到如何在两个 nextInt() 调用之间使用它。

      然后循环。一个循环应该是:

      1. 初始化:循环开始时程序的状态是什么(使用开始日期值,因为它是首先显示的内容)
      2. 循环条件:循环何时停止? (使用结束日期值可能 +1,因为它是最后一个显示)
      3. 进化指令:每次执行循环时,都会有一些进展,以使您的程序状态越来越接近结束循环条件(每个循环+1,因为您希望在开始和结束之间的所有日子)

      走得更远:

      • 我建议您查看 switch 案例以避免链式 if 语句对一个变量的给定值集执行区分
      • 稍后,您可以查看枚举。这是一种存储有限状态的方法,星期显然是学习它们的一个很好的例子。 (当然它们已经存在 -> https://kodejava.org/how-do-i-use-the-java-time-dayofweek-enum/

      【讨论】:

        【解决方案4】:
        public class Week {
        
            public static void main(String[] args) { Scanner input = new Scanner(System.in);
        
                System.out.println("Type a number: ");
                int day = input.nextInt();
                
                System.out.println("Type a stop number: ");
                int stopDay = input.nextInt();
        
                for (int i = day; i <= stopDay; i++) {      // if the stopday should be printed, then use '<=', '<' otherwise
                    printWeekDay(i);
                }
            }
            
            private static void printWeekDay(int day) {
                if (day == 1) {
                    System.out.println("Monday ");
                }
                if (day == 2) {
                    System.out.println("Tuesday ");
                }
                if (day == 3) {
                    System.out.println("Wednesday ");
                }
                if (day == 4) {
                    System.out.println("Thursday ");
                }
                if (day == 5) {
                    System.out.println("Friday ");
                }
                if (day == 6) {
                    System.out.println("Saturday ");
                }
                if (day == 7) {
                    System.out.println("Sunday");
                }
            }
        }
        

        【讨论】:

          猜你喜欢
          • 2017-05-06
          • 2020-11-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-03-26
          • 1970-01-01
          • 2016-02-07
          • 1970-01-01
          相关资源
          最近更新 更多