Java I';我的代码中出现溢出错误,但我可以';我好像没办法解决,有什么建议吗?

Java I';我的代码中出现溢出错误,但我可以';我好像没办法解决,有什么建议吗?,java,indexoutofboundsexception,Java,Indexoutofboundsexception,这是我正在使用的代码 import java.io.*; import java.util.Scanner; class Main{ public static void main (String str[]) throws IOException { Scanner scan = new Scanner (System.in); int c = 0; int d = 0; System.out.println("please enter the f

这是我正在使用的代码

import java.io.*;

import java.util.Scanner;

class Main{

  public static void main (String str[]) throws IOException {
    Scanner scan = new Scanner (System.in);

    int c = 0;
    int d = 0;

    System.out.println("please enter the first string"); 

    String q = scan.nextLine ();
    int b = q.length();
    int asterisk = q.indexOf('*');

    while(c < b-1)
    {
      c++;
      if (q.charAt(c) == '*')
      {
        d++;
        break;
      }
    }

    if(d<1)
    {
      System.out.println("Error: no *");
    }
    else
    {
      System.out.println("Enter the replacement string");
    }
    String rep = scan.nextLine();

    System.out.println(q.substring(0,q.indexOf('*')) + rep + q.substring(asterisk+1,b)); 

  }

 }
我认为这与我正在使用的字符有关,尽管我不能正确地找出如何纠正这个问题 我对编码相当陌生,所以有可能有一些我忽略的简单修复方法
如果有人能帮上忙,我们将不胜感激。

问题是,在调用charAt之前,您增加了c,实际上在最后一个char中超出了范围。您必须在调用charAt后增加c。您还必须与b而不是b-1进行比较,这样您就不会错过最后一个字符

所以换掉这个

while(c < b-1) {
   c++;
   if (q.charAt(c) == '*') { 
      d++;
      break;
   }
}
while(c
为此:

while(c < b) {
   if (q.charAt(c) == '*') { 
      d++;
      break;
   }
   c++;
}
while(c
我喜欢StackTrace显示错误在第282行,但您的代码甚至没有那么长。您的格式也非常糟糕。你能修复缩进和大括号吗?应用修复后,我得到一个不同的outofbounds异常错误:线程“main”java.lang.StringIndexOutofbounds异常:字符串索引超出范围:-1 at java.lang.String.substring(String.java:1911)at main.main(main.java:293)at Ideone.assertRegex(main.java:125)at Ideone.test(Main.java:51)位于Ideone.Main(Main.java:28)
while(c < b) {
   if (q.charAt(c) == '*') { 
      d++;
      break;
   }
   c++;
}