System.out.println("type something to get it back reversed...");
Scanner sc1 = new Scanner(System.in);
String x = sc1.nextLine();//user input
for(int i = x.length(); i > 0; i--)
{
System.out.print(x.substring(i));
}
在这段代码中,我想用一个用户输入的文本,并用一个for循环和子串方法以相反的顺序(即dog = god)输出它。上面的代码是无效的。
例如...... - 当我输入" dog"时,我得到" gog"。 - 当我输入"计算机"时,我得到" rerteruterputermputeromputer"
它永远不会输出文本的第一个字母。如果有人能帮助我并向我解释这一点,我将非常感激:)
答案 0 :(得分:4)
请参阅String类的API。 String.substring(int index)方法创建一个从参数索引到String结尾的子字符串(所以如果x是dog,则x.substring(0)会导致' dog'。也许你希望使用两个参数substring方法。还要注意循环的索引,从长度开始 - 1,结束于0
for ( int i = x.length()-1; i >= 0; i-- ){
System.out.print(x.substring(i, i+1));
}
答案 1 :(得分:2)
substring(i)
会将字符串中的所有内容从i
返回到结尾。要将字符放在字符串中的i
位置,请使用charAt(i)
。
此外,字符串的最后一个索引是x.length()-1
。第一个是零。所以你的循环应该是这样的:
for (int i = x.length()-1; i>=0; --i) {
System.out.print(x.charAt(i));
}
答案 2 :(得分:0)
正如copeg所解释的那样,substring()
会返回字符i之后的所有字符。更简单的解决方案是使用charAt()
:
for(int i = x.length()-1; i >= 0; i--) {
System.out.print(x.charAt(i));
}