尝试反转字符串输入。
例如: 输入 - 你好朋友 输出 - dneirf olleh
这是我制作的程序,但它显示字符串索引超出范围为错误:
import java.io.*;
class Worksheet3sum3
{
public static void main(String args[])throws IOException
{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
int i;
System.out.print("enter string ");
String S=br.readLine();
String y=" ";
for(i=0;i<=S.length();i++)
{
char ch=S.charAt(i);
y=ch+y;
}
System.out.print("the reverse is "+y);
}
}
答案 0 :(得分:0)
使用子字符串,您可以遍历要向后打印的字符串,并向后打印字符串的字符。
您也可以使用命令.toCharArray()
,然后向后循环字符数组以向后打印单词。
答案 1 :(得分:0)
它之所以说索引越界是因为你超越了字符串的最后一个索引,记得我们总是从0开始计数,所以在这种情况下,你的意思是说
i < S.length()
。
for(i=0;i<=S.length();i++) // this is why it's saying index out of bounds because you're going 1 index beyond the last.
{
char ch=S.charAt(i);
y=ch+y;
}
以下解决方案应解决您的“IndexOutOfBounds”问题:
for(i=0;i< S.length();i++) // notice the "i < S.length() "
{
char ch=S.charAt(i);
y=ch+y;
}
另外,我想提供一个简单易用的算法,您可以使用它来获得相同的结果。
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("enter string ");
String value = scanner.nextLine();
StringBuilder builder = new StringBuilder(value); // mutable string
System.out.println("reversed value: " + builder.reverse()); // output result
}
<强>更新强>
由于您要求我扩展您为什么会遇到IndexOutOfBounds错误的问题,我将在下面提供演示。
假设我们现在有一个变量String var = "Hello";
,你可以看到变量中有5个字符,但是,我们从0开始计数,而不是1,所以“H”是索引0,“e”是索引1,“l”索引2等等,最终如果你想访问它的索引4的最后一个元素,即使我们在字符串变量中有5个字符。所以提到你的问题,它说出界限索引的原因是因为你的指数高于最后一个指数。这里有一个link,可以进一步解释和解决这个问题。