首先, a, e
和g
是變量,不一定是字符串。你的意思可能是"a", "e"
和"g"
。
你的問題基本上是:(?或詞)
如何在String[]
,從而使數字數字順序排序之前字母優先這是按字母順序排列的值進行排序?
雖然你的問題似乎不完整。你會如何排序字符串"15qwe"
或"asd34"
?由於這些可以用不同的方式來解釋,並且你沒有告訴我們這些規則,所以我會忽略這些規則,僅以數字和字母來幫助你。
有一個叫做Integer
的類,它有一個叫做parseInt()
的靜態方法。如果這個方法的參數不包含任何整數,它會拋出一個異常,所以它是一個簡單的方法來檢查它是否是數字或字母。
例如:
String[] arr = {"5", "7", "a", "1", "g", "b"};
String[] numberArray = new String[3];
// keep this as a String[] for simpler concatenation of the arrays later
String[] stringArr = new String[3];
/*if you do not know that there will be exactly 3 of each,
just write arr.length isntead of 3*/
for(int i = 0; i < arr.length; i++) {
int numberIndex = 0;
int stringIndex = 0;
try {
Integer.parseInt(arr[i]);
numberArray[numberIndex] = arr[i];
numberIndex++;
} catch (Exception e) {
String s = arr[i];
stringArr[stringIndex] = s;
stringIndex++;
}
}
Arrays.sort(stringArr);
Arrays.sort(numberArray);
現在,所有你需要做的是將兩個數組連接成一個。
發現
// you can replace numberArray.length and stringArr.length with 3 if you want
for(int i = 0; i < numberArray.length; i++) {
arr[i] = numberArray[i];
}
for(int i = 0; i < stringArr.length; i++) {
arr[numberArray.length + i] = stringArr[i];
}
System.out.println(Arrays.toString(arr));
錯誤:
由於numberArray是
String[]
它仍將按字母順序排序,而不是數字。例如,如果您有
"3", "1"
和
"15"
,它將按以下順序排序:
{"1", "15", "3"}
。這可能不是你想要的,所以我的一個錯誤是有一個
String[]
而不是
int[]
。
所以,你需要做的是落實這些更改代碼:
當你在以後要連接數組時,需要將整數再次轉換爲字符串。這很容易用靜態方法Integer.toString()
完成。
所以,你需要使這個小改動的代碼,以及:
arr[i] = Integer.toString(numberArray[i]);
而不是arr[i] = numberArray[i];
排序以什麼樣的方式?你需要解釋一些。 – Gendarme
輸出將是{「1」,「99」,「112」,a,e,g} –
這不是問題。這是一項任務。 –