交换单词中的字母(Java)
我有一个问题: 我试图通过I和j的各种整数值来解决这个问题。但我能找到的最合适的是1和5。然而,即使这样,输出也接近正确的版本,并且不正确。这是我的密码:交换单词中的字母(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,
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);
请参见。两件事:
stringthird=str.substring(i+1,j-1)代码>
stringthird=str.substring(i+1,j)代码>
由于子字符串一直到第二个参数中提到的索引之前,即如果希望子字符串包含j-1,则必须将参数设置为j。Hmm。赋值涉及连接5个字符串。我认为你的代码只打印了3个字符串。此外,看看这个,它应该打印Gateway
,因为charAt(1)和charAt(5)
本身就是ofca
。然而,考虑到这些输入,当您执行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”。非常感谢。我将不得不再次回顾这个概念来记住它。祝你今天愉快:)