如何在字符串中交换字符

时间:2014-12-19 14:20:24

标签: java string

我写了这段代码来交换单词中的字符 但由于某种原因,它没有交换第一个角色,任何帮助将不胜感激。

public class StringWorker{
    public static void main (String[]arg$){

        Scanner in = new Scanner(System.in);
        System.out.println("enter a word: ");
        String str = in.nextLine();

        char[] newCh = str.toLowerCase().toCharArray();
        int length= str.length()-1;
        char temp;

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

                temp = newCh[i];    
                newCh[i] = newCh[i++];
                newCh[i++] = temp;


        }
        String revamped = String.valueOf(newCh);
        System.out.println(revamped);
        System.exit(0);
    }
}

1 个答案:

答案 0 :(得分:5)

变化:

for (int i=0; i<length; i++){                   
    temp = newCh[i];    
    newCh[i] = newCh[i++];
    newCh[i++] = temp;

为:

for (int i=0; i<length - 1; i++){   
    temp = newCh[i];    
    newCh[i] = newCh[i+1];
    newCh[i+1] = temp;
}

i++正在递增i(如i = i + 1),所以当您完成循环的第一次迭代时,i已经是2。

补充:这是我第一次跳出来,但我很好奇你对“交换”的定义。这个小修正只会导致第一个字符一直移动到最后,例如“交换”将成为“waps”。