Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 什么';关于交换相邻字符,我的代码有什么问题吗?_Java - Fatal编程技术网

Java 什么';关于交换相邻字符,我的代码有什么问题吗?

Java 什么';关于交换相邻字符,我的代码有什么问题吗?,java,Java,问题是:编写一个名为swapPairs的方法,该方法接受一个字符串作为参数,并返回该字符串,每对相邻字母都反转一次。如果字符串的字母数为奇数,则最后一个字母不变。例如,调用swapPairs(“示例”)应返回“xemalpe”,而调用swapPairs(“hello there”)应返回“ehll ohtree” 公共静态字符串交换(字符串s){ 字符串t=“”; 如果(s.length()%2==0){ for(int i=0;iString#charAt返回一个char。添加两个chars将

问题是:编写一个名为swapPairs的方法,该方法接受一个字符串作为参数,并返回该字符串,每对相邻字母都反转一次。如果字符串的字母数为奇数,则最后一个字母不变。例如,调用swapPairs(“示例”)应返回“xemalpe”,而调用swapPairs(“hello there”)应返回“ehll ohtree”

公共静态字符串交换(字符串s){
字符串t=“”;
如果(s.length()%2==0){
for(int i=0;i
String#charAt
返回一个
char
。添加两个
char
s将导致另一个char(因为
char
是一种数字类型),而不是像您预期的那样以
String
的形式出现。编译器应该向该方向提供一条错误消息


您可以使用
String#substring

您可以修改您的方法,改为使用
StringBuilder
,并对其进行如下更改:

sb.append(s.charAt((2 * i) + 1)).append(s.charAt(2 * i));

对于以下循环,只能使用1:

public static String swapPairs(String s) {
    StringBuilder t = new StringBuilder();
    for(int i = 0; i < s.length() - 1; i += 2) {
        t.append(s.charAt(i + 1));
        t.append(s.charAt(i));
    }
    if(s.length() % 2 == 1) { //appending the last character if needed
        t.append(s.charAt(s.length() - 1));
    }
    return t.toString();
}
公共静态字符串交换(字符串s){
StringBuilder t=新的StringBuilder();
对于(int i=0;i

另外,使用StringBuilder也是一个好主意:)

那么会发生什么呢?您可以将
for
循环拉到
if
语句之外,在这两种情况下都是一样的,或者使用
charAt()
StringBuilder
append()
一起使用可能会更有效:)
public static String swapPairs(String s) {
    StringBuilder t = new StringBuilder();
    for(int i = 0; i < s.length() - 1; i += 2) {
        t.append(s.charAt(i + 1));
        t.append(s.charAt(i));
    }
    if(s.length() % 2 == 1) { //appending the last character if needed
        t.append(s.charAt(s.length() - 1));
    }
    return t.toString();
}