我有一個數組字符串的長度爲X的數組(「32」,「49」,「2」,...),我需要找到該數組中最大的數字並返回位置(數組[3]是最大數字)如何比較數字字符串?
是否有像數組[0] .isLessThan(數組[3])的庫?或類似的東西?
方案至今:
int max 0
for(i=1; i<X; i++){
if(array(max).isLessThan(array[i]))
max = i;
}
我有一個數組字符串的長度爲X的數組(「32」,「49」,「2」,...),我需要找到該數組中最大的數字並返回位置(數組[3]是最大數字)如何比較數字字符串?
是否有像數組[0] .isLessThan(數組[3])的庫?或類似的東西?
方案至今:
int max 0
for(i=1; i<X; i++){
if(array(max).isLessThan(array[i]))
max = i;
}
我會建議你兩個值進行比較鑄造的價值觀爲整數。
您需要跟蹤最大值以及索引。此解決方案假定所有值都是非負值(因爲我將max設置爲-1),但是您可以輕鬆將max更改爲int min或類似的值。
int max = -1;
int index = -1;
for (int i = 0; i < array.Length; i++)
{
int value = Integer.parse(array[i]);
if (value > max)
{
max = value;
index = i;
}
}
在這一點上,你有數組中最高值的索引。如果有多個最大值,則可以存儲一系列索引。
嚴格說來,這不就是一個'轉換「而不是」轉換「? – sharakan 2013-02-21 02:25:16
「鑄造」在這裏似乎是對術語的濫用;強制轉換是指在字節碼級別上改變一個值的類型(例如,一個轉換爲int的double將在後面用4個字節表示),而這裏所做的就是所謂的「解析」,即語義轉換表示爲一系列字符的信息。 – 2013-02-21 02:36:39
這是我的建議。如果我錯了,請糾正我。
int max 0
for(i=0; i<X; i++){
if(array[i]).isLessThan(array[i+1]))
max = i+1;
else
max = i
}
一種Acamedic利益着想:)更復雜的解決方案:
public static void main(String[] args) {
String[] anArrayOfStrings={"199999","32", "33",
"10000","45","99999","72987","0","92"};
Test test=new Test();
Test.CX cx=test.new CX();
java.util.Arrays.sort(anArrayOfStrings,cx) ;
System.out.println("Item="+anArrayOfStrings[(anArrayOfStrings.length-1)]);
}
class CX<String> implements Comparator{
@Override
public int compare(Object arg0, Object arg1) {
if(Integer.parseInt((java.lang.String) arg0) >
Integer.parseInt((java.lang.String) arg1)){
return 1;
}else if(Integer.parseInt((java.lang.String) arg0) <
Integer.parseInt((java.lang.String) arg1)){
return -1;
}
return 0;
}
}
您正在多次解析相同的字符串。 – whiskeysierra 2017-10-17 11:58:34
@whiskeysierra gr8 – user1428716 2017-10-18 05:02:40
@whiskeysierra此解決方案與使用比較器有關,它應該是執行此類排序的標準方法,而不是具有自定義邏輯。從算法上講,parseInt的額外計算會影響運行時間,但所涉及的步驟數量是相同的 - 所以這是一個更好的解決方案,而不是通過自定義邏輯來查找最大數量 – user1428716 2017-10-18 05:13:50
將其轉換爲使用'Integer.parse(String s)將整數' – Shivam 2013-02-21 02:00:11