我正在尝试编写一个可以反转这个词的程序。
我的代码:
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
我不知道我做错了什么。
答案 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,所以这可能需要稍微调整一下。