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++;
}