【问题标题】:What is a way I can define a range of integers in an if-statement?有什么方法可以在 if 语句中定义整数范围?
【发布时间】:2019-09-15 06:22:40
【问题描述】:

当我尝试在 if 语句中定义整数或尝试定义整数范围时,它会返回一条错误消息,提示“无法访问代码”

我尝试了几种不同的方法,例如将 if 语句更改为

if (rand == 33)

if (rand.nextInt == 33)

返回错误信息 分别是“不兼容的操作数类型 Random 和 Int”、“nextInt 无法解析或不是字段”。

然后我尝试了

if (rand.nextInt() == 33)

然后吐回“无法访问的代码”。

对于范围问题,我尝试了 33-0、0-33,但它不起作用。

    public static void main(String args[]){
    System.out.println("Random Integers:"+computeRandom());
}

    public static int computeRandom() {

    //create instance of Random class
    Random rand = new Random();

    //Generate random integers in range 0 to 100

    rand.nextInt(101); //83
    return rand.nextInt();
    if (rand.nextInt() == 33) {

    }

我希望它最终会返回字母“A”,具体取决于它在预期范围为 0-33 时所处的范围。

【问题讨论】:

  • 您在 if 块之前有一个 return 语句。当您从 Java 方法执行 return 时,方法执行从那里结束并返回给方法的调用者。所以你的if 块永远不会执行,因此unreachable code

标签: java if-statement integer range


【解决方案1】:

您在 if 块之前有一个 return 语句。当您从 Java 方法执行 return 时,方法执行从那里结束并返回给方法的调用者。所以你的if 块永远不会执行,因此无法访问代码

对于范围检查,您可以将其定义为 2 个条件。

  1. 检查值是否等于或大于 0 (value >= 0) 的第一个条件
  2. 检查值是否等于或小于 33 (value <= 33) 的第二个条件

然后使用 AND (&&) 运算符将它们组合如下。

    Random rand = new Random();
    int value = rand.nextInt(101); //83
    if ((value >= 0) && (value <= 33)) {
        // Do something
    }

【讨论】:

    【解决方案2】:

    unreachable code 是因为您的if 语句写在return 语句之后。

    关于整数范围,您始终可以检查特定值是否在此范围内

    if (value >= 0 && value < 33){
        //do something
    }
    

    【讨论】:

      【解决方案3】:

      您发布的代码存在多个问题,但我们可以很容易地解决这些问题。首先,您的 main() 方法目前只会显示一个值;添加一个循环 - 如果您希望看到一个字母,那么 computeRandom() 应该返回一个 char(而不是 int)。

      public static void main(String args[]) {
          for (int i = 0; i < 10; i++) {
              System.out.println("Random Integers: " + computeRandom());
          }
      }
      

      您不应该在您的 computeRandom 方法中构造 Random,在循环中调用它很可能会多次计算相同的 seed(因此您的随机数不会是随机的)。将其作为static 字段构造一次(如此处),或将其作为参数传递给computeRandom()。接下来,要测试0 - 33 的范围,您只需要测试您的值(应该保存,因为每次调用Random.nextInt()应该返回不同的值)小于 34(因为value0 - 100 范围内)。最后,当值不在所需范围内时,您应该返回一些东西;您希望A 有效,所以我选择B 无效。喜欢,

      private static final Random _RANDOM = new Random();
      
      public static char computeRandom() {
          // Generate random integers in range 0 to 100
          int val = _RANDOM.nextInt(101);
          if (val < 34) {
              return 'A';
          }
          return 'B';
      }
      

      如果您不知道value 已经有0 的下限,您会想要一个逻辑和if。喜欢,

      if (val >= 0 && val <= 33) {
          return 'A';
      }
      

      【讨论】:

        【解决方案4】:

        您的 return 语句在 if 块之前,因此该方法将返回值,并且 if 块始终不会被调用。 if 块应该在 return 语句之前。

        对于范围验证,只需添加以下 if 块:

        Integer val = rand.nextInt();
        if (val >= 0 && val <= 33) {
        // in range;
        

        }

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-08-21
          • 1970-01-01
          • 2022-06-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-10
          相关资源
          最近更新 更多