2013-05-25 60 views
3

如何創建一個也將字符串「abcc」轉換爲字母位置之和的循環,比如說a = 1 b = 2 c = 3並且將字符串1 + 2 + 3 + 3 = 9。使用char數組將字符串轉換爲int

import java.util.Arrays; 

    public class Test 
    { 
      public static void main(String[] args) 
      { 
      String original = "hello"; 
      char[] chars = original.toCharArray(); 
      Arrays.sort(chars); 
      String sorted = new String(chars); 
      System.out.println(sorted); 


       } 
      } 
+0

爲= 97,B ASCII碼= 98等,你可以遍歷數字和減去96送1,2等 –

+0

你知道字符可以轉換爲整數或進行相加和相減? 'int number ='c' - 'a'; // = 2'。 – Pshemo

+0

謝謝你們。我喜歡偶爾使用java,但是我的知識在一年之後變得如此生鏽:(。 –

回答

5

可以使用ASCII值。 a的值爲97,b98等。

private int printSum(String original){ 
    int sum = 0; 
    if(original!=null){ 
     char[] arr = original.toLowerCase().toCharArray(); 
     for(int x :arr){ 
      sum+= (x-96); 
     } 
    } 
    return sum; 
} 
+0

這隻適用於小寫字母。大寫意味着減去65. – rethab

+0

謝謝!解決它!! –

+0

@rethab我知道,這就是爲什麼我把ASCII表與我的答案聯繫起來 – NINCOMPOOP

3

您可以利用字符可以轉換爲整數,從而獲得其ASCII值的事實。例如System.out.println((int)'a')將打印'97'。知道這一點,你只需要根據它是大寫字母還是小寫字母來減去某個數字,並且你得到a爲1,b爲2等。

+0

我會記住這一點。謝謝! –

1
  1. 使用正則表達式
  2. 取下串非字母字符
  3. 修改字符串的tolower()或TOUPPER()
  4. 轉換串入charArray
  5. 設置初始結果作爲0
  6. 數組中的foreach char,用64(如果使用大寫)或96(如果使用小寫)減去char值並將其添加到結果中
1

以下是兩種解決方案:一種是按要求提供循環,另一種是遞歸。 這適用於大寫和小寫字母,但不考慮非字母字母。這可以很容易地在if語句中進行測試,具有以下標準:Character.isAlphabetic(c)

public class Main { 

    static final int LOWERCASE_OFFSET = 96; 
    static final int UPPERCASE_OFFSET = 64; 

    public static void main(String[] args){ 
     System.out.println(recursion("Abcc")); 
    } 

    static int recursion(String str) { 
     if(str.isEmpty()) 
      return 0; 

     char c = str.charAt(0); 
     int charVal = Character.isUpperCase(c) ? c - UPPERCASE_OFFSET : c - LOWERCASE_OFFSET; 
     return charVal + recursion(str.substring(1)); 
    } 

    static int loop(String str) { 
     int val = 0; 
     for(char c : str.toCharArray()) { 
      val += Character.isUpperCase(c) ? c - UPPERCASE_OFFSET : c - LOWERCASE_OFFSET; 
     } 
     return val; 
    } 
} 
相關問題