有人可以解释这段代码是如何工作的,特别是for
循环部分,因为我得到了其余部分。
String x = "hello world";
for(int i = x.length() - 1; i >= 0; i--) {
System.out.print(x.charAt(i));
}
答案 0 :(得分:2)
将您的字符串视为一个字符数组。在这个数组中,显然每个字符都有一个索引。
h e l l o w o r l d
0 1 2 3 4 5 6 7 8 9 10
数组索引基于零。因为你的循环从字符串-1的长度开始。你的循环将从11-1开始,即10.然后它只是一次打印出一个字符来处理后缀。
第一次迭代索引或i值为10,因此charAt(10)将打印出'd'
第二次迭代索引小于10,因为你在for循环中递减。所以10-1 = 9. charAt(9)将打印出'l'
这将一直持续到你的循环到达索引i等于0的结束条件。然后循环停止并且程序结束。
基本上你所做的就是打印掉字符串后缀。所以你的最终结果将是 dlrow olleh
答案 1 :(得分:1)
这是一个基本的for循环,以第一个位置为字符串结尾开始,然后在每次迭代时减少1(并在i
为< 0
时停止)。它也可以写成
String x = "hello world";
for (int i = 0; i < x.length(); i++) {
System.out.print(x.charAt(x.length() - (i+1)));
}
还将打印
dlrow olleh
答案 2 :(得分:1)
for
循环:
int i=x.length()-1
创建一个名为i
的整数,它等于字符串中最后一个字符的数字。
i>=0
继续运行此循环(大括号内的所有内容),而值i
大于或等于0. 0是字符串中第一个字符的编号。即在字符串“Hello”中,字符的数量为[0]H, [1]e, [2]l, [3]l, [4]o
。
i--
在此循环的每次迭代中,减少i
的值(“减量”)。
for
循环中的代码行:
System.out.print(x.charAt(i));
在值'i'给出的位置打印字符,即“x
位置i
中的字符。
产生的行为是:
d
l
r
o
w
o
l
l
e
h
请阅读此内容: http://docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html
答案 3 :(得分:1)
首先,更容易理解格式良好的代码。
String x = "hello world";
for (int i = x.length() - 1; i >= 0; i--) {
System.out.print(x.charAt(i));
}
现在我们可以将其分解。
int i = x.length() - 1
初始化int
变量i
,其值为x.length() - 1
,这是字符串的最后一个索引(字符串/数组的索引为0到length - 1)
i >= 0;
当前索引i
大于或等于第一个索引(0
)时,将字符打印到控制台; System.out.print(x.charAt(i));
。
i--
减少索引i
,使其引用前一个字符。
答案 4 :(得分:0)
for循环的工作原理如下:
For(Initialization; Statement; Incrementation){INSERT CODE HERE}
初始化: 在你的代码中,for循环创建一个变量i,它被设置为等于“hello world”中的字符数 - 1.由于String中有11个字符,11-1 = 10.因此i = 10。
声明: 在for循环中,有一个声明。如果该语句为true,则将执行正文中的代码。由于i(11为11)大于或等于0,代码将执行(增量后)。
增量方向: 变量i现在下降1.它现在等于10.代码现在将执行。
代码: X.charAt(i)给出了字符串X的索引处的字符。由于i等于10,程序将给出第10个索引处的字母,即“d”。
声明: 该程序现在再次进入声明。 I = 10。 10大于或等于0.我现在等于9.代码现在将执行,给出第9个索引处的字母“l”。
这将一直持续到我达到-1。一旦达到-1,它就不再大于或等于0,所以程序将停止,给你“dlrow olleh”