Java SPOJ-PALIN-NZEC错误
我使用了下面的代码来回答这个问题,但当我在SPOJ上提交它时,它总是给我NZEC错误。我的代码在Eclipse上或通过cmd完全运行Java SPOJ-PALIN-NZEC错误,java,Java,我使用了下面的代码来回答这个问题,但当我在SPOJ上提交它时,它总是给我NZEC错误。我的代码在Eclipse上或通过cmd完全运行 import java.util.Scanner; import java.util.ArrayList; public class Main { public static void main(String[] args) { int line,num,numb,rev = 0,r,i,flag; ArrayList
import java.util.Scanner;
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
int line,num,numb,rev = 0,r,i,flag;
ArrayList <Integer> nums=new ArrayList <Integer>();
Scanner b=new Scanner(System.in);
Scanner a=new Scanner(System.in);
line=b.nextInt();
for(i=0;i<line;i++)
{flag=0;
num=a.nextInt();
num=num+1;
numb=num;
do {
while(numb>0)
{r=numb%10;
rev=(rev*10)+r;
numb=numb/10;
}
if (rev==num)
{nums.add(num);
rev=0;
flag=1;
break;
}
else
{num=num+1;
numb=num;
rev=0;}
}while(flag==0);
}
for (int newnum : nums)
{System.out.println(newnum);}
}
}
import java.util.Scanner;
导入java.util.ArrayList;
公共班机{
公共静态void main(字符串[]args){
int行,num,numb,rev=0,r,i,标志;
ArrayList nums=新的ArrayList();
扫描仪b=新的扫描仪(System.in);
扫描仪a=新的扫描仪(System.in);
line=b.nextInt();
对于(i=0;i0)
{r=numb%10;
rev=(rev*10)+r;
麻木=麻木/10;
}
如果(rev==num)
{nums.add(num);
rev=0;
flag=1;
打破
}
其他的
{num=num+1;
numb=num;
rev=0;}
}while(flag==0);
}
for(int newnum:nums)
{System.out.println(newnum);}
}
}
您所犯的错误是将num
存储在整数数据类型中
不超过1000000位的K(它是位
,并且不超过该号
)
整数
不可能存储如此庞大的数
。因此,您必须使用字符串
来解决此特定问题。请在eclipse中尝试此输入
45465465465465465446546546464646
你会意识到你错在哪里我不理解你所做的更改,我刚刚开始使用Java。你能解释一下或者参考一些有用的资源吗?哦,这意味着我必须把整个程序从整数转换成字符串。即使在检查回文时,我也不应该使用数学方法,而是应该存储字符串的反面,然后将其与原始字符串进行比较。那么这种方法正确吗?@yash10p:-是的,你必须使用字符串,你可以这样做。.还有另一种方法。.你可以将第一个索引处的数字
与最后一个索引
进行比较,然后是第二个索引
到第二个最后一个索引
等等,如果它们是相同的,那么就可以了,否则就不会是苍白的