問題大概描述:從鍵盤輸入一組正整數數組,將它們拼接起來,輸出拼接後值最小的那個數:
輸入參數:
第一個參數代表數組長度
輸入數組數組,用空格分開
輸出
一個整數
例子
輸入
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;
}
}