我试图做一些Project Euler问题,其中涉及前5个素数的特殊可分性要求的pandigital数字,并认为这将是起点(见1023456789是第一个被查看的数字,和9876543210)是最后一个)。
import java.util.*;
public class pandigital_special
{
public static void main (String args[])
{
for (long l = 1023456789; l <= 9876543210; l++)
{
}
}
}
有谁能告诉我为什么编译器声称for循环只支持整数?我从来没有听说过这个。也就是说,编译器说“int类型的文字9876543210超出范围”。
答案 0 :(得分:2)
您的代码运行正常。唯一的问题是你的第二个数字(9876543210)超出了int范围,但你使用的是int literal。
要使用长文字,只需在数字的末尾附加一个L:
9876543210L
这是一个更完整的例子:
public class Test {
public static void main(String[] args){
for (long l = 1023456789L; l <= 9876543210L; l++){
System.out.println(l);
}
}
}
答案 1 :(得分:0)
for (long l = 1023456789; l <= 9876543210; l++)
您的号码9876543210
太大,无法将其更改为
9876543210L
更新的代码将如下所示
for (long l = 1023456789; l <= 9876543210L; l++)
答案 2 :(得分:0)
我认为你必须有一个L来声明它是一个很长的,像这样:
long l = 1023456789L