2016-01-14 12 views
-6
一個字符串數組的函數

您好我想寫這將排序字符串數組的函數,例如編寫將整理使用Java

{"1","112","99", a, e, g}

String arr[] = { "1", "112", "99", "e", "a", "g" }; 

    // Arrays.sort(arr); 

    int numberArray[] = new int[3]; 
    String stringArr[] = new String[3]; 

    for (String value : arr) { 
     boolean isNumeric = value.chars().allMatch(x -> Character.isDigit(x)); 

     if (isNumeric) { 
      for (int i = 0; i < numberArray.length; i++) { 
       numberArray[i] = Integer.parseInt(value); 
      } 
     } else { 
      for (int i = 0; i < stringArr.length; i++) { 
       stringArr[i] = value; 
      } 
     } 

     Arrays.sort(numberArray); 
     Arrays.sort(stringArr); 

     System.out.println(numberArray); 
     System.out.println(stringArr); 

    } 
} 
+0

排序以什麼樣的方式?你需要解釋一些。 – Gendarme

+0

輸出將是{「1」,「99」,「112」,a,e,g} –

+0

這不是問題。這是一項任務。 –

回答

0

首先, a, eg是變量,不一定是字符串。你的意思可能是"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[]

所以,你需要做的是落實這些更改代碼:

  • int[] numberArray = new int[3];而不是String[] numberArray = new String[3];

  • numberArray[numberIndex] = Integer.parseInt(arr[i]);代替:Integer.parseInt(arr[i]); numberArray[numberIndex] = arr[i];

當你在以後要連接數組時,需要將整數再次轉換爲字符串。這很容易用靜態方法Integer.toString()完成。

所以,你需要使這個小改動的代碼,以及:

arr[i] = Integer.toString(numberArray[i]);而不是arr[i] = numberArray[i];

+0

'boolean isNumeric = value.chars '塊。 – Pshemo

+0

@Pshemo當然。在編輯問題之前,我正在寫這篇文章。我的'try-catch'塊可以忽略。 – Gendarme

+0

感謝您的幫助,工作 –