数组排序
描述
给定一组n个正整数,根据各位数字之和从小到大进行排序。
输入
输入数据有多组,每组数据占一行,每行的第一个数正整数n,表示整数个数,后面接n个正整数。当n为0时,不作任何处理,输入结束。
输出
输出每组要求下原始数据排序的结果。
样例输入
2 1 2
3 121 10 111
0
样例输出
1 2
10 111 121
提示:创建一个数据对象Data,该对象有两个成员变量,一个为数据,另外一个为数据的各位数字和,定义一个计算数字和方法,在构造方法中调用该计算方法获得和然后赋值给成员变量。在主程序源文件中的类中,定义争对对象数组排序的方法,排序的对象依据Data对象的和成员,排序后输出对象数组的原数据成员。
//文件名:Question2.java
public class Question2{
public static void main(){
//创建输入扫描器
Int n=
While(n!=0){
//创建Data数组
//读一个数,创建Data对象,并给数组赋值
//调用sort方法
//输出数组对象的原数据成员值
}
}
public static void sort(Data[] datas){
//采用冒泡法排序
}
}
class Data{
int value;
int sumvalue;
Public Data(int value){
This.value=value;
Sumvalue = getSum(value);
}
public int getSum(int n){
Int sum=0;
while(n>0){
//自己完成代码
}
return sum;
}
}
import java.util.Scanner;
public class Test01 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//创建输入扫描器
int n = in.nextInt();
while (n != 0) {
Data[] arr = new Data[n];//创建Data数组
for (int i = 0; i < n; i++)
arr[i] =new Data(in.nextInt());//读一个数,创建Data对象,并给数组赋值
//values 交换排序
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - i - 1; j++) {
if (arr[j].sum >arr[j + 1].sum) {
Data tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
for (int i = 0; i < n; i++) {
System.out.print(arr[i].num + " ");
}
System.out.println();
n = in.nextInt();
}
}
//创建一个数据对象Data
static class Data{
int num,sum;
public Data(int n) {
this.num=n;
sum=getsum(n);
}
}
//定义一个计算数字和方法
private static int getsum(int n) {
int value = 0;
while (n > 0) {
value += n % 10;
n /= 10;
}
return value;
}
}