for循环中的条件表达式不按预期方式运行
我似乎无法确定我的代码出了什么问题。在阅读了String类之后,我尝试用短得多的代码向后打印回文,但除了执行换行符之外,控制台上什么都没有。 我认为这个问题可能来自于for语句中的条件表达式,因为当我使用“i < = l & & i> -1”并用System.print(i +“”)调试它时,我得到了列表中的数字范围从17到0.那么,当前表达式有什么问题,为什么我不能使用“i < l & & i> -1”?有没有什么是非法的,因为我打算使用从16到0的数字呢?for循环中的条件表达式不按预期方式运行
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());
}
}
索引设置为相同的值长,所以循环不会因为条件最初是错误的而执行。
您的问题是在你的for循环第一部分:
for(index = length ; index < length ...
和
for(int i = l; i < l ...
是你会产生问题。如果index
设置为length
的值,则它不小于长度,因此index < length
返回false
并且for循环将被完全跳过。与您的i
和l
for循环一样。
,而不是你应该初始化到length - 1
:
for (index = length - 1 ; index < length && index > -1; index--)
backwards [index] = objString.charAt(index);
修改你以同样的方式等循环:
for (int i = l - 1; i < l && i > -1 ; i--)
backwards [i] = palindrome.charAt(i);
谢谢。我现在明白了。它必须是一个新手。我对自己很确定。你能把我放在正确的轨道上吗?我想让我通过回文索引来运行。 – NyproTheGeek 2014-08-28 01:26:29
从最后一个索引开始向下。 – NyproTheGeek 2014-08-28 01:33:48
如果在第一次迭代中'i = l',它不会通过条件检查'i
Blorgbeard
2014-08-28 00:56:25
for(int i = l; i> -1; i--) – Donal 2014-08-28 00:58:07
'for(init; condition; increment){body}'相当于'init; while(condition){body;增量; }' - 如果你将for循环翻译成这种形式,问题应该会变得更加清晰。 – Blorgbeard 2014-08-28 01:00:46