Java練習 SDUT-1188_各位數字之和排序
阿新 • • 發佈:2018-09-27
lse inpu class 個數 lose time pub cin int
C語言實驗——各位數字之和排序
Time Limit: 1000 ms Memory Limit: 65536 KiB
Problem Description
給定n個正整數,根據各位數字之和從小到大進行排序。
Input
輸入數據有多組,每組數據占一行,每行的第一個數正整數n,表示整數個數,後面接n個正整數。當n為0時,不作任何處理,輸入結束。n<=10
Output
輸出每組排序的結果。
Sample Input
2 1 2
3 121 10 111
0
Sample Output
1 2
10 111 121
可以開兩個數組,一個存儲原數字,一個存儲各位數字之和,然後排序是一起變動就可以,不過想到了C裏的結構體,Java的類也是類似的功能。
import java.util.*; public class Main { public static void main(String[] args) { Scanner cin = new Scanner(System.in); num[] a = new num[15]; num t = new num(); int n,i,j; for(i=0;i<15;i++) a[i] = new num(); while(cin.hasNextInt()) { n = cin.nextInt(); if(n==0) break; for(i=0;i<n;i++) { a[i].x = cin.nextInt(); a[i].b = a[i].f(); } for(i=0;i<n;i++) for(j=0;j<n-i-1;j++) if(a[j].b>a[j+1].b) { t = a[j]; a[j] = a[j+1]; a[j+1] = t; } for(i=0;i<n;i++) if(i==n-1) System.out.println(a[i].x); else System.out.print(a[i].x+" "); } cin.close(); } } class num { int x,b; int f() { int a = x,sum = 0; while(a!=0) { sum += a%10; a /= 10; } return sum; } }
Java練習 SDUT-1188_各位數字之和排序