为什么我的swapCase方法只返回一个字符?

时间:2014-07-08 20:21:00

标签: java string swap

我正在尝试解决有关返回新字符串的方法的练习,其中大写字母更改为小写,小写字母更改为大写。 它只返回字符串的第一个字符,我不知道是什么导致它。 这是我的代码:

import java.util.Scanner;

public class Test {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("Enter a string: ");
        String s = input.nextLine();

        System.out.print("The new string is: " + swapCase(s));

    }

    public static String swapCase(String s) {

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

            if (Character.isLowerCase(s.charAt(i))) {
                s = String.valueOf(Character.toUpperCase(s.charAt(i)));
            } else if (Character.isUpperCase(s.charAt(i))) {
                s = String.valueOf(Character.toLowerCase(s.charAt(i)));
            }

        }

        return s;
    }

}

1 个答案:

答案 0 :(得分:0)

您正在重新定义循环的每次迭代的字符串s。您将需要连接新的chararcters以形成最终的大小写交换字符串。

public static String swapCase(String s) {
    String swapped = "";
    for (int i = 0; i < s.length(); i++) {

        if (Character.isLowerCase(s.charAt(i))) {
            swapped += String.valueOf(Character.toUpperCase(s.charAt(i)));
        } else if (Character.isUpperCase(s.charAt(i))) {
            swapped += String.valueOf(Character.toLowerCase(s.charAt(i)));
        }

    }

    return swapped;
}