交换单词中的字母(Java)

交换单词中的字母(Java),java,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和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));
        
    }
}
这将导致输出:
gateay


我的代码有什么问题吗?或者我的整数值取错了吗?我一直在想办法,但肯定没用。我希望有人能指出我犯的错误。

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);
请参见。

两件事:

  • i和j的选择,i=1和j=3(基本上是要交换的字母的索引)
  • stringthird=str.substring(i+1,j-1)
  • 应该是

    stringthird=str.substring(i+1,j)


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

    Hmm。赋值涉及连接5个字符串。我认为你的代码只打印了3个字符串。此外,看看这个,它应该打印
    Gateway
    ,因为
    charAt(1)和charAt(5)
    本身就是ofc
    a
    。然而,考虑到这些输入,当您执行
    string first=str.substring(0,i)时得到的字符串,您期望得到什么
    str
    上的
    i
    位置的索引之前结束。那么当你做
    stringthird=str.substring(i+1,j-1)时,你认为会发生什么?它在索引前面的
    j-1
    处结束。因此它在
    j-2
    处结束。这不是你被告知要做的。请不要将文本作为图像包含在内。如果你需要志愿者的帮助,请让他们尽可能容易地帮助你。我无法阅读这些图片中的文字。感谢您的回复!我自己也发现了用“j-1”代替“j”的错误,这让我觉得我在这个位置上做错了什么。明白了,NoMadMaker。@GhostCat因为OP显然是一个完全的初学者,而且已经快到了,但是现在卡住了,再加上一点慷慨的帮助,将有助于OP学习代码的旅程。你看到结果应该是“逃走”了吗?@evg_ny和“逃走”就是它打印的内容。我添加了一个现场演示的链接。啊,明白了!我忘了它应该是“j”而不是“j-1”。非常感谢。我将不得不再次回顾这个概念来记住它。祝你今天愉快:)啊,明白了!我忘了它应该是“j”而不是“j-1”。非常感谢。我将不得不再次回顾这个概念来记住它。祝你今天愉快:)