java - if/while 语句不执行 (java)
问题描述
我做了一个public int
,以便它返回一个与许多其他整数不同的数字。它应该返回 9,但是,它只是给了我一个随机数,就像 if 语句甚至不存在一样。
这是代码
import java.util.*;
static int sum1;
static int sum2 = 1;
static int sum3 = 2;
static int num1 = 3;
static int num2 = 4;
static int num3 = 5;
static int dum1 = 6;
static int dum2 = 7;
static int dum3 = 8;
public static int getNumbers()
{
int holder;
boolean numFound = false;
holder = 1 + (int) (Math.random() * 9);
if (holder == 0) while(numFound = false)
{
holder = 1;
if (holder!=sum1 && holder!=sum2 && holder!=sum3 && holder!=num1 && holder!=num2 && holder!=num3 && holder!=dum1 && holder!=dum2 && holder!=dum3)
{
numFound = true;
}
} else {
if (holder!=sum1 && holder!=sum2 && holder!=sum3 && holder!=num1 && holder!=num2 && holder!=num3 && holder!=dum1 && holder!=dum2 && holder!=dum3)
{
numFound = true;
}
}
return holder;
}
public static void main(String[] args) throws InterruptedException {
sum1 = getNumbers();
System.out.println(sum1);
}
发生了什么,我能做些什么来解决它?
解决方案
您的代码可以简化为
holder = 1; /* or higher */
if (holder == 0)
{ /* all of the "while" ignored, because "if" is not true */
} else
{ /* always executed */
}
if
似乎被忽略并不令我感到惊讶。
如果您打算在条件为真时检查 if 语句,那么最相似的代码将是
do
{
if(conditioni)
{ /* then */
} else
{ /* else */
}
} while (conditionw);
或者通过颠倒顺序
while (conditionw)
{
if(conditioni)
{ /* then */
} else
{ /* else */
}
}
需要验证您的逻辑细节,何时评估的顺序可能很重要。
推荐阅读
- javascript - Material UI 自动完成与文本字段中的头像
- scala - Spark DataFrameWriter 在保存时省略尾随制表符分隔符 (Spark 1.6)
- sql - 根据 SQL 或 Presto Athena 中的某一行中的某个值过滤列
- .htaccess - 带参数的 302 重定向 url
- perl - 如何在 perl 脚本中删除扩展名
- flutter - Flutter - 相机添加叠加
- sql-server - 如何在 EF Core 的存储过程中映射子查询
- python - 在 Python 中打印对象/类的实例
- visual-studio-code - 从集成终端中删除“搜索工作区(cmd+单击)”悬停
- python - Python 中的位运算符