Java Can';无法绕过索引超出范围错误

Java Can';无法绕过索引超出范围错误,java,Java,我正在尝试编写一段代码来格式化一系列字符串(我在稍早的时候发布了这段代码,但几分钟后删除了它,因为我认为我没有投入足够的精力)。我现在发帖是因为我一直收到一个“索引超出范围”的错误,但不确定如何修复它 我已经尝试过将我能想到的所有东西包装在“if”语句中,以防止出现超出范围的错误,但它们没有帮助 你知道怎么了吗 (仅供参考:ExpressionTools.isOp(char)是一种根据所讨论的字符是否为运算符返回true或false的方法,也称为:+,-,*,/) publicstaticlis

我正在尝试编写一段代码来格式化一系列字符串(我在稍早的时候发布了这段代码,但几分钟后删除了它,因为我认为我没有投入足够的精力)。我现在发帖是因为我一直收到一个“索引超出范围”的错误,但不确定如何修复它

我已经尝试过将我能想到的所有东西包装在“if”语句中,以防止出现超出范围的错误,但它们没有帮助

你知道怎么了吗

(仅供参考:ExpressionTools.isOp(char)是一种根据所讨论的字符是否为运算符返回true或false的方法,也称为:+,-,*,/)

publicstaticlist postfix=newarraylist();
公共静态字符串结果;//更正字符串的结果
//更正后缀字符串中的格式设置,如果出现任何错误,请输入后缀
//排列
公共静态空格(字符串a,int x){
StringBuilder b=新的StringBuilder(a);
对于(int i=x;i
当您有一个循环时,例如:

for (int i = x; i < b.length(); i++)
for(int i=x;i
i
x
b.length()-1


因此,
i+1
将达到
b.length()
,此时
b.charAt(i+1)
超出范围,并将抛出得到的异常。

循环
i
直到
b.length()
,并且在
条件下,检查导致此错误的char(i+1)。

b.charAt(i+1)正在为您造成索引越界异常。。。因为charAt()也是从零开始计数的。。。 例如:

输出:
a

b.charAt(i+1)
在字符串末尾时将超出范围,即当
i
等于
b.length()-1
时,
i
的条件最终将导致此错误(因为
b.chartAt(i+1)
将达到长度,然后再增加一个索引)如果(i+1==0)中断
,您似乎试图用
来避免这个问题,但是
i+1==0
怎么可能是真的呢?这是打字错误吗?
for (int i = x; i < b.length(); i++)
public class Test {

   public static void main(String args[]) {
      String s = "Strings are immutable";
      char result = s.charAt(8);
      System.out.println(result);
   }
}