试图反转字符串输入

时间:2017-02-21 19:00:58

标签: java

尝试反转字符串输入。

例如:     输入 - 你好朋友     输出 - 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);
    }
}

2 个答案:

答案 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,可以进一步解释和解决这个问题。