【问题标题】:How to exclude statement from looping?如何从循环中排除语句?
【发布时间】:2021-04-27 18:15:59
【问题描述】:

我被要求展示一个最多只能数到 50 的程序。

我的问题是当输入超过 50 时,语句“Number must be below to 50!”仍然从循环中打印出来。

这是我的代码:

import java.util.Scanner;

class Main {

    public static void main (String args[]){

        Scanner input = new Scanner(System.in);
        int counter=0;
        int num = input.nextInt();

        for (int i=0; i<=num; i++) 
        {
            if (num >= 0 && num<=50) {
                System.out.print (i + " ");
            }
            else {
                System.out.print ("Number must be below 50!");
            }
        }
        System.out.println ();
    }
}

由于某种原因,如果用户的输入超过了51,输出变成:

Number must be below to 50!Number must be below to 50!Number must be below to 50!......

如何从循环中排除语句?

【问题讨论】:

  • 如果不希望消息多次显示,最简单的方法是将显示它的语句移到循环外。
  • 当您说“出于某种原因”时 - 原因是“因为您的代码就是这样做的”。您的if 语句条件根本不依赖于i...您打算这样做吗?如果您对代码目前的执行方式感到惊讶,您可能需要在调试器中单步执行它。

标签: java loops


【解决方案1】:

运行以下代码应该会给你想要的结果:

System.out.println("Enter a number below 50:");
Scanner input = new Scanner(System.in);
int num = input.nextInt();

if (num < 50)
{
    System.out.println("Counting down from " + num);
    for (int i = 0; i <= num; i++) {
        System.out.print(i + ", ");
    }
}
else System.out.print("Number must be below 50!");

【讨论】:

    【解决方案2】:

    将循环放在if 语句中。

    伪代码:

    if(num >= 0 and num<=50){
      loop...
    else
      print("num must be below 50")
    

    【讨论】:

      【解决方案3】:

      只需改变线的用途。

      class Main {
      
          public static void main (String args[]) {
      
              Scanner input = new Scanner(System.in);
              int counter=0;
              int num = input.nextInt();
              if(num>50) {
                  System.out.print ("Number must be below 50!");
              }
              for (int i=0; i<=num; i++)
              {
                  if (num >= 0 && num<=50) {
                     System.out.print (i + " ");
                  }
              }
              System.out.println ();
          }
      }
      

      【讨论】:

      • 为什么不直接删除循环内的 if 语句呢?它不检查循环首先检查的任何内容。
      猜你喜欢
      • 1970-01-01
      • 2018-04-20
      • 1970-01-01
      • 2013-04-08
      • 2014-12-14
      • 2018-11-03
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多