2011-07-01 81 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)切换而改变上降低,反之亦然字节的第三位。这种切换只适用于字母当然。

相关问题