Java Don';我不知道SPOJ的哪些边界案例给出了错误的答案

Java Don';我不知道SPOJ的哪些边界案例给出了错误的答案,java,Java,这是完整的代码 package spoj; import java.util.*; import java.util.regex.*; import java.text.*; import java.math.*; import java.awt.geom.*; import java.io.*; public class ABSURD { public static void main(String[] args) throws IOException{

这是完整的代码

  package spoj;
  import java.util.*;
  import java.util.regex.*;
  import java.text.*;
  import java.math.*;
  import java.awt.geom.*;
  import java.io.*;


  public class ABSURD {
  public static void main(String[] args) throws IOException{
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    Scanner sc = new Scanner(System.in);
    String in = sc.nextLine();
    long t = Long.parseLong(in);
    while(t>0)
    {
        String n;
        n = sc.nextLine();

        int i= n.length()-1;
        while(i>=0)
        {
            if(n.charAt(i) != '0')
                break;
            i--;
        }
        long k = Long.parseLong(n);
        double x1 = (.95 * (double)k);
        double x2 = (1.05*(double)k);
        long x = (long)x1;
        long y = (long)x2;
        if((double)x == x1)
            x = x-1;
       System.out.println(x+" "+y);
        n = n.substring(0,i+1);
       // System.out.println(n);
        if(n.equals(""))
        {
            System.out.println("not absurd");
            t--;
            continue;

        }


        String a = Long.toString(x);
        int la = a.length();
        String b = Long.toString(y);
        int lb = b.length();

        int absurdity  = n.charAt(n.length()-1) == 5?2*n.length()-1:2*n.length();
        //System.out.println(absurdity);
        String answer = "not absurd";
        if(n.length() == 1)
        {

                answer = "not absurd";
        }
        else
        {
            if(la<lb)
            {
                if(absurdity >2)
                    answer = "absurd";
            }

            if(lb == la)
            {
                int j=0;
                while(j<la)
                {
                    if(a.charAt(j) != b.charAt(j))
                        break;
                    j++;

                }
            int absurd = a.charAt(j)<'5' && b.charAt(j)>='5'?2*(j+1)-1:2*(j+1);
            //System.out.println(absurd);
            if(absurd<absurdity)
                answer = "absurd";

            }

        }


        System.out.println(answer);

        t--;

    }
    }

  }
spoj包装;
导入java.util.*;
导入java.util.regex.*;
导入java.text.*;
导入java.math.*;
导入java.awt.geom.*;
导入java.io.*;
公众阶级的荒谬{
公共静态void main(字符串[]args)引发IOException{
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));
扫描仪sc=新的扫描仪(System.in);
字符串in=sc.nextLine();
长t=long.parseLong(in);
而(t>0)
{
字符串n;
n=sc.nextLine();
int i=n.长度()-1;
而(i>=0)
{
如果(n.charAt(i)!='0')
打破
我--;
}
长k=long.parseLong(n);
双x1=(.95*(双)k);
双x2=(1.05*(双)k);
长x=(长)x1;
长y=(长)x2;
如果((双精度)x==x1)
x=x-1;
System.out.println(x+“”+y);
n=n.子串(0,i+1);
//系统输出println(n);
如果(n等于(“”)
{
系统输出打印(“不荒谬”);
t--;
持续
}
字符串a=Long.toString(x);
int la=a.长度();
字符串b=Long.toString(y);
int lb=b.长度();
int荒诞=n.charAt(n.length()-1)==5?2*n.length()-1:2*n.length();
//系统输出打印(荒诞);
String-answer=“不荒谬”;
如果(n.长度()==1)
{
回答:“不荒谬”;
}
其他的
{
if(la2)
回答:“荒谬”;
}
如果(lb==la)
{
int j=0;

while(j我在你的代码中看到了一些潜在的错误。我在这里不讨论它们,但会让你了解自己(好吧,这就是练习的重点)。不过,我会给出一些代码产生错误结果的情况。我希望这能使你进一步进行

  • 15(输出不应该是荒谬的,您的输出应该是荒谬的)
  • 25(输出不应该是荒谬的,您的输出是荒谬的)
  • 55(输出不应该是荒谬的,您的输出应该是荒谬的)
  • 1500(输出不应该是荒谬的,您的输出应该是荒谬的)