SPOJ上的java错误

SPOJ上的java错误,java,math,error-handling,Java,Math,Error Handling,问题: import java.util.Scanner; class Main { public static void main(String[] args)throws java.lang.Exception { Scanner p = new Scanner(System.in); for(int i=p.nextInt();i>0;i--){ int k = p.nextInt(); i

问题

import java.util.Scanner;

 class Main {

    public static void main(String[] args)throws java.lang.Exception {
        Scanner p = new Scanner(System.in);
        for(int i=p.nextInt();i>0;i--){
            int k = p.nextInt();
            int A[] = {192,442,692,942};
            int l = 0;
            while(l<k){
                if((l!=0)&&(l%4 == 0)){
                    A[0]+=1000;
                    A[1]+=1000;
                    A[2]+=1000;
                    A[3]+=1000;
                }
                l++;
            }
            System.out.println(A[(l-1)%4]);
        }
    }
}

必须从头开始打印第k个数字,其多维数据集的最后3位数字为888。它遵循一种模式:1924426929421921442169219422192244226922942,依此类推

我的解决方案

import java.util.Scanner;

 class Main {

    public static void main(String[] args)throws java.lang.Exception {
        Scanner p = new Scanner(System.in);
        for(int i=p.nextInt();i>0;i--){
            int k = p.nextInt();
            int A[] = {192,442,692,942};
            int l = 0;
            while(l<k){
                if((l!=0)&&(l%4 == 0)){
                    A[0]+=1000;
                    A[1]+=1000;
                    A[2]+=1000;
                    A[3]+=1000;
                }
                l++;
            }
            System.out.println(A[(l-1)%4]);
        }
    }
}
import java.util.Scanner;
班长{
公共静态void main(字符串[]args)引发java.lang.Exception{
扫描仪p=新扫描仪(系统英寸);
对于(int i=p.nextInt();i>0;i--){
int k=p.nextInt();
INTA[]={192442692942};
int l=0;

虽然(l因为您将在int中存储k=2000000000,这是不可能的,因此它是溢出的,并且可能存储了一个负数。您正在访问它以获取数组索引。因此,这实际上是arrayIndexOutOFBounds问题。要检查,您可以使用try catch for arrayIndexOutOFBounds并打印一些内容。这将给出错误的答案时间。

我也尝试过使用BigInteger,但它给出了相同的错误这里是代码包spoj;import java.math.BigInteger;import java.util.Scanner;公共类Eights{public static void main(String[]args)抛出java.lang.Exception{Scanner p=new Scanner(System.in);for(int I=p.nextInt();I>0;I--){biginger k=p.nextbiginger();k=k.subtract(biginger.ONE);k=k.multiply(biginger.valueOf(250));k=k.add(biginger.valueOf(192));System.out.println(k);}}}}删除第一行“package spoj;”。这是一个错误。在提交时,您没有任何软件包。另外,请尝试优化您的算法,因为运行10^13的循环并不好。提示:您需要拆分奇数和偶数的K,并尝试生成一个通用公式。只需试着将其写下来,您就会看到它。