【发布时间】:2014-10-21 17:53:47
【问题描述】:
我似乎无法确定我的代码有什么问题。在阅读了 String 类之后,我尝试用更短的代码向后打印回文,但除了执行换行符之外,我在控制台上什么也没有。 而且我认为问题可能来自 for 语句中的条件表达式,因为当我使用“i -1”并使用 System.print(i +" ") 对其进行调试时,我得到了一个列表数字范围从 17 到 0。那么当前表达式可能有什么问题,为什么我不能使用“i -1”?是否因为我打算使用 16 到 0 之间的数字而不是违法的?
public class StephenWork
{
private String objString ;
private int index;
private void makeString ( String objString)
{
this.objString = objString;
}
private char[] printBackwards ()
{
int length = objString.length();
char [] backwards = new char [length];
for (index = length ; index < length && index > -1 ; index-- )
{
backwards [index] = objString.charAt(index);
}
return backwards;
}
public static void main (String ... args)
{
String palindrome = "tod saw I was dot";
int l = palindrome.length();
char [] backwards = new char [l];
for ( int i = l; i < l && i > -1 ; i-- )
{
//System.out.println(i); //I was using this to debug the value of i
backwards [i] = palindrome.charAt(i);
}
String printPalin = new String (backwards);
System.out.println(printPalin);
StephenWork example = new StephenWork ();
example.makeString("I love Java");
System.out.println( example.printBackwards());
}
}
【问题讨论】:
-
如果
i = l在第一次迭代中,它不会通过条件检查i < l。 -
for (int i = l; i > -1 ; i--)
-
for (init; condition; increment) { body }等价于init; while (condition) { body; increment; }- 如果您将 for 循环转换为该形式,问题应该会变得更加清晰。 -
该死!这完全逃脱了我。谢谢大家,现在我可以看到哪里出错了。
标签: java for-loop expression conditional palindrome