繁体   English   中英

交换单词中的字母(Java)

[英]Swapping letters in a word (Java)

我有这个问题:题

我尝试通过 i 和 j 的各种整数值来解决这个问题。 但我能找到的最合适的版本是 1 和 5。然而即使如此,输出也接近正确的版本并且不正确。 这是我的代码:

public class test {
    public static void main(String[] args) {

        String str = "Gateway";
        int i = 1, j =5;
        String first = str.substring(0, i);
        System.out.println(first);
        char second = str.charAt(j);
        System.out.println(second);
        String third = str.substring(i + 1, j -1);
        System.out.println(third);
        System.out.println(str.charAt(i));
        System.out.println(str.substring(j + 1));
        
    }
}

这导致输出: G a te ay

我的代码有问题还是我使用了错误的整数值? 我一直在试图弄清楚,但肯定没有帮助。 我希望有人能指出我正在做的错误。

Java 是一种从零开始的索引语言。 使用这些值:

int i = 1; // the first "a"
int j = 3; // the first "e"

substring()的结束参数是独占的- 请参阅下面的错误修复!

为了清晰和调试能力,尝试这样编码:

String first = str.substring(0, i);
char second = str.charAt(j);
String third = str.substring(i + 1, j); // Note: corrected bug!
char fourth = str.charAt(i);
String fifth = str.substring(j + 1);

System.out.println(first + second + third + fourth + fifth);

现场演示

两件事情:

  1. i 和 j 的选择,i = 1,j = 3(基本上是要交换的字母的索引)。
  2. String third = str.substring(i + 1, j - 1);

应该

String third = str.substring(i + 1, j);

当子字符串到达​​第二个参数中提到的索引之前的索引时,即如果您希望子字符串包含 j-1,则必须将参数设置为 j。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM