打印单词连续反转和相同的顺序?

时间:2014-11-05 01:22:55

标签: java

分配:

  

编写一个程序来显示这样的输出,其中输入是在运行时给出的。

示例输入:

my name is raghavendra

示例输出:

ym name si raghavendra 

这是我到目前为止所做的:

import java.util.*;

class ReverseString2 {
    public static void main(String[] args) {
        Scanner sc = new

2 个答案:

答案 0 :(得分:0)

根据您的问题,我会使用StringBuilder。因为,当索引是偶数时,它具有有用的reverse()函数。我相信你想要像

这样的东西
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    while (sc.hasNextLine()) {
        String line = sc.nextLine();
        // The \\s+ pattern matches one or more white-space characters.
        String[] words = line.split("\\s+");
        for (int i = 0; i < words.length; i++) {
            if (i != 0) {
                System.out.print(' ');
            }
            StringBuilder sb = new StringBuilder(words[i]);
            // Reverse every other word.
            if (i % 2 == 0) {
                sb.reverse();
            }
            System.out.print(sb);
        }
        System.out.println();
    }
}

答案 1 :(得分:0)

另一种解决方案是使用charAt。代码看起来与此类似:

public String invertEvenWords(String line) {     

    String result = "";
    String[] words = line.split("\\s+");

    for (int i = 0; i < words.length; i++) {

        /* The n-th word is reversed if n i even. */
        if (i % 2 == 0) {
            String inv = "";
            for (int j = 0; j < words[i].length(); j++) {
                char ch = words[i].charAt(j);
                inv = ch + inv;
            }
            result += inv + " ";

        /* Otherwise the word isn't reversed. */
        } else {
            result += words[i] + " ";
        }
    }

    return result;

}
相关问题