博雅筆試記錄:輸入最小的數

問題大概描述:從鍵盤輸入一組正整數數組,將它們拼接起來,輸出拼接後值最小的那個數:
輸入參數:
第一個參數代表數組長度
輸入數組數組,用空格分開
輸出
一個整數
例子
輸入
3
4 43 432
輸出
432434

需要掌握的重點:從鍵盤取得多個數值(死在這塊,最後沒通過,想哭!!!)
第二:邏輯排序

代碼參見:

public class Test {
    public static void main(String[] args) {
        Scanner scanner  = new Scanner(System.in);
        int length;
        System.out.println("please input the length of arrays:");
        length=scanner.nextInt();
        int[] array = new int[length];
        int index = 0;
        System.out.println("please input the number in the array(please separate with space):");
        //獲得多行輸入的方式,切記!!!
        while (scanner.hasNext()) {
            if(scanner.hasNextInt()) 
                array[index++]=scanner.nextInt();
            if(index>=array.length) break;

        }
        //獲取數據結束
        System.out.println((getResultNum(array)));
    }
    /*
    *邏輯方法
    */
    public static int getResultNum(int []arr)
    {
        int result;
        List<String>strs=new ArrayList<String>();
        for(int num:arr)
        {
            strs.add(String.valueOf(num));
        }
        Collections.sort(strs,new Comparator<String>()
                {

            @Override
            public int compare(String o1, String o2)
            {
                String s1=o1+o2;
                String s2=o2+o1;
                return s1.compareTo(s2);
            }
                });

        StringBuilder sbuilder=new StringBuilder();
        for(String str:strs)
        {
            sbuilder.append(str);
        }
        result=Integer.parseInt(sbuilder.toString());
        return result;
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章