如何调试程序以反转单词?

时间:2017-02-25 23:02:28

标签: java arrays string loops char

我正在尝试编写一个可以反转这个词的程序。

我的代码:

public class reverseword

{
static String s = "AHAMED";
static char[] c = s.toCharArray();
static char[] reverse = new char[c.length];

public static void main(String[] args)
{

    for(int i = 0; i < c.length - 1; i++)
    {
        for(int j = reverse.length - 1; j >=0 ; j = j -1)
        {
            reverse[j] = c[i];
        }
    }
    String r = String.valueOf(reverse);
    System.out.println(r);
}
}

输出:

EEEEE

预期输出:

DEMAHA

我不知道我做错了什么。

3 个答案:

答案 0 :(得分:1)

你的循环应该是:

for(int i = 0; i < c.length - 1;)
        for(int j = reverse.length - 1; j >=0 ; j--,i++)
            reverse[j] = c[i];

可以通过使用一个循环进一步增强:

for (int i=0, j=(reverse.length - 1); i < (c.length - 1) || j >= 0; j--, i++)
        reverse[i] = c[j];

但是,这不是反转字符串的理想方法。

答案 1 :(得分:0)

首先,这是错误的:

if(estadoMateria.equals("Puede cursar") || estadoMateria.equals("Puede inscribirse")) {
    parentHolder.tvEstado.setText(estadoMateria);
}

你永远不会得到最后一个符号。使用

i < c.length - 1

i < c.length

尝试在你的脑海中“执行”内部循环 - 它会得到你所写的内容 - 从 c 中取出符号,然后将其设置为反向<的所有位置/ strong>即可。它对于 c 的所有符号(除了最后一个,请参见上一个错误) - 因此只有最后一次尝试存储在反向中。 你应该消除内部循环并使用像

这样的结构
i <= c.length - 1

答案 2 :(得分:0)

您不需要第二个数组 - StringBuilder更好。我不是坐在IDE前面,而是尝试这样的事情:

var sb = new StringBuilder();
for (int i = originalString.Length - 1; i >= 0; i--)
    sb.append(originalString[i]);

如果你真的想要两个数组,你仍然只需要一个循环。我没有测试过,但尝试这样的事情:

int j = 0;
for (int i = originalString.Length - 1; i >= 0; i---) {
       array[j] = originalString[i];
     j++;
}

同样,我不是IDE,所以这可能需要稍微调整一下。