为什么此代码不反转用户输入的文本?
Why isn't this code reversing user inputted text?
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 循环和 substring 方法以相反的顺序输出它(即 dog = god)。上面的代码是非功能性的。
例如...
- 当我输入 "dog" 时,我得到 "gog"。
- 当我输入 "computer" 时,我得到 "rerteruterputermputeromputer"
它从不输出文本的第一个字母。如果有人能帮助我并向我解释一下,我将不胜感激:)
请参阅字符串 class 的 API。 String.substring(int index) 方法创建一个从参数索引到字符串末尾的子字符串(所以如果 x 是狗,x.substring(0) 会导致 'dog'。也许你希望使用两个参数子字符串方法。还要注意循环的索引,从长度 - 1 开始到 0
结束
for ( int i = x.length()-1; i >= 0; i-- ){
System.out.print(x.substring(i, i+1));
}
substring(i)
returns 字符串中从 i
到结尾的所有内容。要获取字符串中位置 i
处的字符,请使用 charAt(i)
。
此外,字符串的最后一个索引是 x.length()-1
。第一个是零。所以你的循环应该是这样的:
for (int i = x.length()-1; i>=0; --i) {
System.out.print(x.charAt(i));
}
正如 copeg 所解释的,substring()
returns 字符 i 之后的所有字符。一个更简单的解决方案是使用 charAt()
:
for(int i = x.length()-1; i >= 0; i--) {
System.out.print(x.charAt(i));
}
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 循环和 substring 方法以相反的顺序输出它(即 dog = god)。上面的代码是非功能性的。
例如... - 当我输入 "dog" 时,我得到 "gog"。 - 当我输入 "computer" 时,我得到 "rerteruterputermputeromputer"
它从不输出文本的第一个字母。如果有人能帮助我并向我解释一下,我将不胜感激:)
请参阅字符串 class 的 API。 String.substring(int index) 方法创建一个从参数索引到字符串末尾的子字符串(所以如果 x 是狗,x.substring(0) 会导致 'dog'。也许你希望使用两个参数子字符串方法。还要注意循环的索引,从长度 - 1 开始到 0
结束for ( int i = x.length()-1; i >= 0; i-- ){
System.out.print(x.substring(i, i+1));
}
substring(i)
returns 字符串中从 i
到结尾的所有内容。要获取字符串中位置 i
处的字符,请使用 charAt(i)
。
此外,字符串的最后一个索引是 x.length()-1
。第一个是零。所以你的循环应该是这样的:
for (int i = x.length()-1; i>=0; --i) {
System.out.print(x.charAt(i));
}
正如 copeg 所解释的,substring()
returns 字符 i 之后的所有字符。一个更简单的解决方案是使用 charAt()
:
for(int i = x.length()-1; i >= 0; i--) {
System.out.print(x.charAt(i));
}