有人可以澄清这个反转字符串的代码片段吗?

时间:2014-01-02 00:38:37

标签: java string loops

有人可以解释这段代码是如何工作的,特别是for循环部分,因为我得到了其余部分。

String x = "hello world";

for(int i = x.length() - 1; i >= 0; i--) {
    System.out.print(x.charAt(i));
}

5 个答案:

答案 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中的字符。


产生的行为是:

  1. 从字符串x打印字符10 - &gt; d
  2. 从字符串x打印出字符9 - &gt; l
  3. 从字符串x打印字符8 - &gt; r
  4. 从字符串x打印字符7 - &gt; o
  5. 从字符串x打印字符6 - &gt; w
  6. 从字符串x打印出字符5 - &gt;
  7. 从字符串x打印出字符4 - &gt; o
  8. 从字符串x打印出字符3 - &gt; l
  9. 从字符串x打印出字符2 - &gt; l
  10. 从字符串x打印字符1 - &gt; e
  11. 从字符串x打印出字符0 - &gt; h
  12. 请阅读此内容: 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”