我正在解决 spoj 上的 PALIN,但我收到 NZEC 错误,即使它正在 ideone 上工作

I am solving PALIN on spoj ,but I am getting NZEC error even though it is working on ideone

一个正整数如果从左到右和从右到左读时在十进制中的表示相同,则称为回文。给定一个不超过1000000位的正整数K,写出大于K的最小回文的值输出。显示的数字始终不带前导零。

  import java.util.Scanner;

    class next{

 public static void main(String ags[])
 {
    Scanner in = new Scanner(System.in);
    int n=in.nextInt();
   for(int i=0;i<n;i++)
    {
    String s = in.next();

    if(s.length()%2==0)
    {

    int p = s.length()/2;
    String sub = s.substring(0,p);
    String sub2= s.substring(p,s.length());

    String reverse = new StringBuffer(sub).reverse().toString();

    int t = Integer.parseInt(reverse);
    int t1= Integer.parseInt(sub2);

        if(t>t1)
        {

            System.out.println(sub+reverse);

        }
        else
        {

            int t2 = Integer.parseInt(sub)+1;
            String s2 = Integer.toString(t2);
            String rev = new StringBuffer(s2).reverse().toString();
            System.out.println(s2+rev);

        }

    }
    else
    {

        int len = s.length()/2;
        String se1 = s.substring(0,len);
        String se2 = s.substring(len+1,s.length());

        String reverse = new StringBuffer(se1).reverse().toString();

        int t = Integer.parseInt(reverse);
        int t1= Integer.parseInt(se2);



            if(t>t1)
            {
                String se = s.substring(0,len+1);
                System.out.println(se+reverse);

            }
            else
            {
                String temp = s.substring(0,len+1);
                int tn = Integer.parseInt(temp);
                tn++;
                String left = Integer.toString(tn);
                String grip = left.substring(0,left.length()-1);
                String reve = new StringBuffer(grip).reverse().toString();
                    System.out.println(left+reve);

            }





    }

    }

   }

  }

我是 programming.I 的初学者,我正在尝试在 spoj 上解决这个问题#PALIN,但即使它正在处理 ideone.please 也出现运行时错误,请帮助我

您的代码存在一些问题,但最大的问题是您在可以表示 far 范围之外的值的字符串上调用 Integer.parseInt =11=]。说明说输入最多可以是一百万位数字,这意味着您要在最多一百万位数字的字符串上调用 Integer.parseInt — 也就是说,最多 10500000−1 — 但 ints 只上升到 231−1,小于 1010

修复该问题后,您可以通过执行以下操作来测试您的代码:

  • 将实际计算结果的逻辑提取到它自己的方法中,并带有类似 String computeNextPalindrome(String s) 的签名。这样,您就可以通过以编程方式调用它并检查其结果来测试该方法,而不是乱用标准输出。
  • 写一个方法,初始化expectedResultcomputeNextPalindrome("99999")的预期结果(即"100001"),然后从99999向下迭代到1,验证 computeNextPalindrome 总是 returns expectedResult。每次校验后检查当前数是否为回文,如果是则更新expectedResult为当前数

这样,您就可以详尽地测试您的逻辑是否适用于最多五位数的所有数字。除了我上面提到的错误之外,关于尝试将 int 用于 int 范围之外的值,most 错误将出现在一些小案例中。有一个只影响大值的错误是相当不寻常的;所以通过详尽地测试小值,你可以找到几乎所有的错误。

然后您可以通过抽查一些大值来检查特定于大值的错误,例如 "1234567890123456789012345678901234568790"(应该给出 "1234567890123456789119876543210987654321")。