我是Java新手,从未见过计算机代码直到一周前,我设法将这些代码放在一起,但不能完全理解以下概念:
当表示我的第一个子字符串从int F
开始时,对我来说更有意义的是代码在F = s.length();
而不是+1
正确执行,因为s是11个字符。在d
之后启动一个并且不打印任何内容的索引是s.length()+1;
,但似乎在单词结束后将从两个索引开始。就像我的第二个子串一样,当它执行时,G将为3,意味着它将从第二个l
开始,并根据需要填补空白。任何人都可以为我解决这个问题吗?
谢谢。
public class Main {
public static void main(String[] args) {
String s = "hello world";
String rep = s.replaceAll("[a-z]", " ");
int F = s.length()+1;
int G = 2;
for(int i = 0; i<s.length(); i++, F--, G++)
if (i == 0 || i >= s.length()-1){
System.out.println(s);
} else {
System.out.println(s.charAt(0) + rep.substring(F) + s.charAt(i) +
rep.substring(G) + s.charAt(s.length()-1));
}
}
}
答案 0 :(得分:0)
你的思考是正确的;为了完成子字符串,F
应该从s.length()
开始。你需要添加+ 1
的原因是因为你在到达子字符串代码之前经历了一次循环。
第一次浏览循环时,打印出s
并继续。现在进行第二次迭代,i = 1
,G = 3
和F = s.length()
,因为for循环已将{1}添加到i
和G
,并从{{减去1 1}}。
所以,实际上,您关注的子字符串部分确实以{{1}}开头,在您的代码中很难看到。
以下是代码的修改版本,它执行相同的操作,但以F
开头。
F = s.length()