java - 字符串索引越界异常?

标签 java string reverse indexoutofboundsexception

我的任务是反转一个字符串并打印反转后的字符串。

这是我的代码

import java.util.*;
import java.io.*;
public class reverse1
{
  public static void reverse(String x) throws IllegalCharacterException
  {
    char j;
    int max;
    String reversedString = " ";
    for(int i = 0; i < x.length() - 1; i++)
    {
      max = x.length();
      j = x.charAt(i);
      j = reversedString.charAt(max);
      i--;
    }//end for loop

   }//end method

 public static void main(String[] args) throws IllegalCharacterException
 {
   Scanner keyboard = new Scanner(System.in);
   String s;
   System.out.println("Please enter a string");
   s = keyboard.next();
   reverse(s);
 }//end main

}//end class

我不断收到此错误:

java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.charAt(Unknown Source)
at reverse1.reverse(reverse1.java:14)
at reverse1.main(reverse1.java:26)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at edu.rice.cs.drjava.model.compiler.JavacCompiler.runCommand(JavacCompiler.java:272)

我已经检查了提到的行号,但仍然不明白问题所在。我确实将 x.length() 更改为 x.length() - 1,因为 friend 告诉我这样做,但我不断收到相同的错误。

最佳答案

你的问题出在这里:

String reversedString = " ";

几行之后你写:

j = reversedString.charAt(max); // while the reversedString.length() == 1

这就是您收到错误的原因。您混淆了输入到 max(显然是 6)的 x.length() 和始终等于“”并且长度永远不会大于 1 的 returnedString。

关于java - 字符串索引越界异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36212364/

相关文章:

Ruby方法反转字符串输入

c++ - 递归函数以反向字符串C++

java - 智能 : use docker jvm or docker maven?

java - 将自定义值添加到外部绑定(bind)(JAXB - MOXY 实现)

c++ - 如何判断字符串中的字符是否为整数

python - <bytes> 转义 <str> Python 3

c++ - 使用 for 循环以相反的顺序将字符串值分配给 char 数组

java - 在java中正确定义集合

java - 如何使用 LDAP Java API 创建 SharePoint 2013 用户组

python - 对python的列表行为感到困惑