Java分解质因数 Runtime Error问题

问题遇到的现象和发生背景

OJ答题:
题目:
Description
从键盘读入一组正整数,分别对每个数进行质因数分解。
Input
从键盘输入一组大于1的正整数。
Output
每个正整数的质因数分解乘积形式。
Sample Input
3 12 30 21
Sample Output
3=3

12=223

30=235

21=3*7

在本地运行成功,在OJ上显示Runtime Error

问题相关代码,请勿粘贴截图

package layer_one.layer_two.layer_three;

import java.util.Scanner;

public class Main {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
String str=in.nextLine();
String[] str1=str.split(" ");

    int a[]=new int[str1.length];
    int len=str1.length;
    for(int i=0;i<len;i++){
        a[i]=Integer.parseInt(str1[i]);
    }

    for(int i=0;i<len;i++){
        calculate c1=new calculate();
        if(a[i]==1){
            System.out.printf("1=1\n");
        }
        else{
            c1.out(a[i]);
        }
    }
    in.close();
}

}

class calculate{
public void out(int N){
String out="";
int N1=N;
int i=0;
for(i=2;i<=N;i++){
if(N%i==0){
if(i==N){
out+=N;
}
else{
out+=i+"*";
}
N/=i;
i=2;
i--;
}
}
System.out.printf("%d=%s\n",N1,out);
}
}

运行结果及报错内容

img


运行结果出现runtime Error

img

我的解答思路和尝试过的方法

img


根据提示并未找到Runtime Error的原因

我想要达到的结果

程序在OJ上accpted并找到Runtime Error的原因

img

import java.util.*;
 
public class Main1 {
    
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        while(input.hasNext())
        {
            int n = input.nextInt();
            System.out.print(n+"=");
            for(int i=2; i<=n; i++)
            {
                while(n%i==0 && n!=i)
                {
                    n=n/i;
                    System.out.print(i+"*");
                }        
                if(n == i)
                 {
                    System.out.printf("%d\n",i);
                    break;
                }
            }
        }
    }
}

calculate 类放在什么位置

可能嵌套过深导致

可能你的算法没有优化好,深度太高,所以溢出啦。

img

in.close();去掉

下届超标?用Try抛出异常语句,然后就好处理了

是不是栈溢出了