2011-07-01 82 views
0

我需要編寫一個將字符串作爲輸入的應用程序。處理完畢後,應打印出反轉的字符串,並將所有字符從低位切換爲大寫,反之亦然。我想用StringBuilder來達到這個目的。反轉字符串並切換小寫大寫

採樣運行:
輸入:你好人
輸出:NAMUh 2009東海生日賀

+2

如果是家庭作業,請用家庭作業標籤標記。 – aioobe

+2

我每分鐘都會收到做作業的報酬,請告知我是否可以負擔得起我的服務。 :) –

+4

?raf os deirt ev'uoy tahw tsoP – Raoul

回答

2

下面是一個簡單的,簡單的解決問題的方式:利用比如

  1. 讀取用戶輸入Scanner類。和nextLine()方法。 (通過以System.in作爲參數來構造Scanner)。

  2. 創建StringBuilder

  3. 使用例如換每次提取從輸入字符串中的字符陣列,使用例如input.toCharArray()

  4. 反轉陣列Arrays.asListCollections.reverse

    Collections.reverse(Arrays.asList(yourCharArray)); 
    
  5. 遍歷該列表循環。

    for (Character c : yourCharArray) { 
        ... 
    } 
    
  6. 對於每一個字符,檢查是否c.isUpperCase(如果有的話追加c.toLowerCase())其他附加c.toUpperCase()

(一種替代方法將是給StringBuilder的輸入字符串作爲參數,並使用所述reversecharAtsetCharAt方法操縱就地的字符串。)

+0

StringBuilder result = new StringBuilder();對於(int i = 0; i mel

+0

@aioobe,爲什麼你不能指向'StringBuilder.reverse()'方法呢? –

+0

@精英紳士。那是個很好的觀點。我添加了(有點)作爲最後的評論。這只是我想到的第一個解決方案。 – aioobe

0

要反轉字符串使用String reverse = new StringBuffer(YourString).reverse().toString();

0

下面是一個 「精英」 三線解決方案:

StringBuffer buffy = new StringBuffer("!GNIzA Ma").reverse(); 
    for (int i = 0; i < buffy.length(); i++) 
     buffy.setCharAt(i, Character.isLetter(buffy.charAt(i)) ? (char) (buffy.charAt(i)^32) : buffy.charAt(i)); 

    System.out.println(buffy); // "Am aZing!" 

此工作,因爲該異或^32(或0x20)切換而改變上降低,反之亦然字節的第三位。這種切換隻適用於字母當然。

相關問題