当前位置: 首页 > 知识库问答 >
问题:

在IF语句中定义变量(Java)[重复]

花永昌
2023-03-14

我目前正在学习Java,作为其中的一部分,我正在尝试制作一个随机数生成器。

该项目仍处于早期阶段,但当我制作错误检查组件时,我遇到了一些问题,我一直在想为什么它不能以这种方式工作。

下面是错误检查器,它接收numberAmount(用户请求的随机数的数量)和randomDigit(随机数的最大位数)。

我想让它在数量或数字过高时进行标记,这可能会导致应用程序崩溃。

下面是代码。

public static boolean errorCheck(int numberAmount, int numberDigit){

    //int checkAmount = 0;
    //int checkDigits = 0;

    if (numberAmount > 15){
        System.out.println("We can't generate that many numbers!");
        int checkAmount = 1;
    } else if (numberAmount < 0){
        System.out.println("We can't generate negative amount of numbers!");
        int checkAmount = 1;
    } else if (numberAmount == 0) {
        System.out.println("Zero numbers requested");
        int checkAmount = 1;
    } else {
        int checkAmount = 0;
    }

    if (numberDigit > 15){
        System.out.println("We can't generate that many numbers!");
        int checkDigit = 1;
    } else if (numberDigit < 0){
        System.out.println("We can't generate negative amount of numbers!");
        int checkDigit = 1;
    } else if (numberDigit == 0) {
        System.out.println("Zero numbers requested");
        int checkDigit = 1;
    } else {
        int checkDigit = 0;
    }


    if (checkAmount == 1 || checkDigit == 1){
        return true;
    } else {
        return false;
    }
}

当我不插入int checkAmount=0 int checkDigits=0最后一个if语句错误,因为没有可引用的变量。然而,如果我在第一个和第二个if语句中包含了所有的检查变量,我会得到预先存在的局部变量的错误。

我已经尝试了一些修复,并在网上阅读了一些内容,但我仍然不明白为什么我不能在if语句中定义或重写变量。


共有3个答案

井洲
2023-03-14

Elliot的回答是正确的,但是如果你想在if-否则块中使用变量,你应该分开声明和赋值

int check;
if(...){
    check = 42;
}else{
    // do something else with check
}
姬安志
2023-03-14

你不能这样做(如果像那样定义的局部变量),至少它没有意义。也不需要,只需返回true。比如,

if (numberAmount > 15) {
    System.out.println("We can't generate that many numbers!");
    return true;
} else if (numberAmount < 0) {
    System.out.println("We can't generate negative amount of numbers!");
    return true;
} else if (numberAmount == 0) {
    System.out.println("Zero numbers requested");
    return true;
}
if (numberDigit > 15) {
    System.out.println("We can't generate that many numbers!");
    return true;
} else if (numberDigit < 0) {
    System.out.println("We can't generate negative amount of numbers!");
    return true;
} else if (numberDigit == 0) {
    System.out.println("Zero numbers requested");
    return true;
}
return false;

我还注意到在这个验证中有一些常见的消息;然后可以进一步简化为

if (numberAmount > 15 || numberDigit > 15) {
    System.out.println("We can't generate that many numbers!");
    return true;
} else if (numberAmount < 0 || numberDigit < 0) {
    System.out.println("We can't generate negative amount of numbers!");
    return true;
} else if (numberAmount == 0 || numberDigit == 0) {
    System.out.println("Zero numbers requested");
    return true;
}
return false;

杜俊逸
2023-03-14

我仍然不明白为什么不能在if语句中定义或重写变量。

您可以在if语句的受控块中定义它们,但是任何变量定义都会在封闭范围的末尾消失。

不能重写已在同一方法中声明的变量。

你需要这种东西:

int checkAmount = 0;

if (numberAmount > 15){
    System.out.println("We can't generate that many numbers!");
    checkAmount = 1;
} else // ...
 类似资料:
  • 我无法跟踪随机数生成器分配的变量。我尝试生成两个不同范围的随机数,并根据更新分数或不更新分数生成的数字,然后根据一组规则告诉用户他们是赢还是输。 我已经附上了下面的代码,所以你可以看到我在说什么,但我基本上需要变量roll1和roll2的帮助,谢谢你的帮助。

  • 问题内容: 我想知道是否可以像这样在条件运算符中为变量赋值: 用Java有什么办法做到这一点?因为我知道在某些情况下这是可能的,但是我不确定在if语句中是否做错了或者是否不可能。 问题答案: 可以分配变量,但不能在条件语句中声明变量:

  • 我不太明白java中语句的定义。我在网上读了很多页,还有其他问题,但没有一个能给我一个准确的答案。 我们这里有多少陈述? 我想说,这是一个声明。然而,我们也可以这样写: 这是两个声明,对吗?

  • 问题内容: 我收到以下代码的编译错误: 如果将其更改为以下代码,则没有编译错误: 为什么第一种语法是错误的,以及从哪种语言标准开始? 问题答案: Java规范说一条语句具有以下形式: 在哪里和可各种各样的事情,包括块(代码括号括起来),任务(已声明的变量),其他的if语句等。 值得注意的是,该列表中缺少声明语句(例如或),因此会出现编译错误。 有关完整列表,您可以在此处阅读Java规范:http

  • 好吧,我正在使用字典,例如: 然后我想做的基本上是说,如果“用户”(一个参数)的名称前面有“@”,那么将变量前缀分配为“@”,如果他们的名称前面有“~”,则将变量前缀分配为“~”,如果他们有“ 然后我想说,如果用户的名字前面有“%”,则将前缀变量设置为“%”,否则将其设置为“”(因为这些值只有两个键)。为此,我需要一个if语句,并将其与self进行比较。声音的价值。 分配前缀变量的当前代码 目前,

  • 问题内容: 我刚刚开始学习go lang,而对于在go lang中声明变量感到困惑 例如我已经声明,里面if … else语句。 但是终端出现错误 好像我在If语句中声明的任何内容都不起作用…我该如何解决? 问题答案: 因为变量仅在声明它们的范围内定义: 去玩 之间的区别,并是仅仅是分配和对变量的声明和分配新建分配FY语法 这个: 等效于: 您可能想要的是: