我似乎无法确定我的代码有什么问题。在阅读了String类之后,我尝试使用更短的代码向后打印回文,但除了执行换行符之外,我在控制台上什么也得不到。 我认为问题可能来自for语句中的条件表达式,因为当我使用“i< = l&& i> -1”并使用System.print(i +“”)调试它时,我得到了一个从17到0的数字列表。那么当前表达式可能有什么问题,为什么我不能使用“i< l&& 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());
}
}
答案 0 :(得分:1)
索引设置为与length相同的值,因此循环将不会执行,因为条件最初为false。
答案 1 :(得分:0)
您的问题出在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);