在学校ACM预选赛的官网上做题,Eclipse没问题,但是提交到OJ上说Runtime Error
]会不会是OJ的问题?
地址: http://acm.xidian.edu.cn/land/
题目:
给定n个数字,按照数字的各个数位上数字的和从小到大排序。
如果数字之和相同,就先输出数值小的那个数。
输入:3
111
23
31
输出:111
31
23
我的代码
package test55;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int[] arr=new int[n];
//获取输入
int[] sum=new int[n];
int a=0;
int b=0;
for(int i=0;i<n;i++){
Scanner sc=new Scanner(System.in);
a=sc.nextInt();
arr[i]=a;
while(a>0){
b=a%10;
sum[i]+=b;
a=a/10;
}
}
int index[]=insertSort(sum);
for(int i=0;i<n;i++){
System.out.println(arr[index[i]]);
}
}
//定义插入排序方法
public static int[] insertSort(int[] sum) {
int index[]=new int[sum.length];
for(int i=0; i<sum.length; i++) {
index[i]=i;
}
for(int i=1; i<sum.length; i++) {
for(int j=i; j>0; j--) {
if(sum[j] < sum[j-1]) {
int temp = sum[j];int t=index[j];
sum[j] = sum[j-1];index[j]=index[j-1];
sum[j-1] = temp;index[j-1]=t;
} else {
break;
}
}
}
return index;
}
}