Java 我的程序是否有运行时错误,或者我的计算机没有运行我的程序的能力?
所以我开始了Euler项目,第一个问题很简单,但是我无法得到答案,因为我创建的程序没有运行。它编译得很好,但当我运行它时,它从未运行过。欧拉计划说,这些问题“通过有效的实施,可以在不到一分钟的时间内在一台功率适中的计算机上找到解决方案。”这就引出了我的问题。我是被困在无限循环中,还是我的计算机没有能力运行我的程序 问题是:如果我们列出所有低于10的自然数,它们是3或5的倍数,我们得到3、5、6和9。这些倍数之和是23 求1000以下所有3或5的倍数之和Java 我的程序是否有运行时错误,或者我的计算机没有运行我的程序的能力?,java,Java,所以我开始了Euler项目,第一个问题很简单,但是我无法得到答案,因为我创建的程序没有运行。它编译得很好,但当我运行它时,它从未运行过。欧拉计划说,这些问题“通过有效的实施,可以在不到一分钟的时间内在一台功率适中的计算机上找到解决方案。”这就引出了我的问题。我是被困在无限循环中,还是我的计算机没有能力运行我的程序 问题是:如果我们列出所有低于10的自然数,它们是3或5的倍数,我们得到3、5、6和9。这些倍数之和是23 求1000以下所有3或5的倍数之和 public class Euler1 {
public class Euler1
{
public static void main(String[] args)
{
double x = 1;
int count = 0;
int total = 0;
while( x < 1000)
{
if((x/3 == (int)x) || (x/5 == (int)x))
{
count++;
x++;
total += x;
}
}
System.out.println(total);
}
公共类Euler1
{
公共静态void main(字符串[]args)
{
双x=1;
整数计数=0;
int-total=0;
而(x<1000)
{
如果((x/3==(int)x)| |(x/5==(int)x))
{
计数++;
x++;
总数+=x;
}
}
系统输出打印项次(总计);
}
}问题在于,如果
在循环中如果条件为false,那么x
永远不会递增
(除非x
为0,否则它将始终为false)您的程序是错误的
while( x < 1000)
{
if((x/3 == (int)x) || (x/5 == (int)x))
{
count++;
x++;
total += x;
}
}
while(x<1000)
{
如果((x/3==(int)x)| |(x/5==(int)x))
{
计数++;
x++;
总数+=x;
}
}
请注意,只有当条件为true时,x才会递增。x从1开始,所以条件不是真的,所以x永远不会递增并保持在1
另外,x/3==(int)x
和x/5==(int)x
都不是正确的可除性测试。除非x是0,否则这两个都不是真的。你陷入了一个无限循环。if语句永远不会被调用,因为除非x
为0
,否则它永远不会返回true,因此x
变量永远不会递增。我建议研究这个问题的%
(模数)运算符。除非x为零,否则x/3或x/5怎么会等于x?你的代码没有任何意义。注意:这里没有编译错误或运行时错误,因此标记是不相关的。