Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 未执行for循环外部的语句_Java_Loops_For Loop_Unreachable Code - Fatal编程技术网

Java 未执行for循环外部的语句

Java 未执行for循环外部的语句,java,loops,for-loop,unreachable-code,Java,Loops,For Loop,Unreachable Code,我是Java新手。我找到了一个名为“欧尔德计划”的网站,正在练习一个问题。 我不明白为什么下面的程序只在我输入System.out.println(max)时才显示任何内容;在for循环中,它工作,但显示所有素数,包括最大的素数。我应该只显示最大素数的人是谁 public class LargestPrimeFactor { public static void main(String[] args) { long x = 600851475143L;

我是Java新手。我找到了一个名为“欧尔德计划”的网站,正在练习一个问题。 我不明白为什么下面的程序只在我输入System.out.println(max)时才显示任何内容;在for循环中,它工作,但显示所有素数,包括最大的素数。我应该只显示最大素数的人是谁

public class LargestPrimeFactor {

    public static void main(String[] args) {
        long x = 600851475143L;
        int max = 0;
        for (int i = 1; i <= x; i++) {
            if (x % i == 0)
                if (isPrime(i))
                    max = i;
        }
        System.out.println(max);

    }

    public static boolean isPrime(int n) {
        for (int i = 2; i < n; i++) {
            if (n % i == 0)
                return false;
        }
        return true;
    }
}
public类最大的primefactor{
公共静态void main(字符串[]args){
长x=600851475143L;
int max=0;

对于(int i=1;i您已经编写了一个无限循环:
600851475143L
大于
int
中可以存储的最大值,因此
i您应该学会使用调试器。如果没有,您应该写出算法所采取的每一步。它被称为
LargestPrimeFactor
,而不是
所有的primefactor
>你将在循环中溢出int。你知道,如果你从顶部开始向下,你将只找到最大的,而不必首先检查它下面的所有万亿数字。从逻辑上讲,你的代码是正确的(在isPrime(i)后面放一个System.out.println,请加上更多的大括号,你就会看到你的代码工作了)。您只是没有给它足够的时间来处理600851475143个值。这意味着您可能需要重新思考您的方法。当数字对于
int
来说太大时,如何执行for循环?我只是想知道,他不应该这样做。简单:
for(long l=0;l
for循环语法中的任何内容都不会强制您使用
int
,甚至数字。谢谢!将所有变量更改为long并不能解决此问题,因为查找数字花费了太多时间,但将x除以其除数直接给出了答案