线程“main”java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:-18
这是我的密码线程“main”java.lang.StringIndexOutOfBoundsException中出现异常:字符串索引超出范围:-18,java,Java,这是我的密码 import java.util.Scanner; import java.io.*; class Main { public static void main (String[] args)throws IOException { Scanner scan = new Scanner(System.in); System.out.println ("Enter message board post:"); String username = scan.nextLin
import java.util.Scanner;
import java.io.*;
class Main {
public static void main (String[] args)throws IOException {
Scanner scan = new Scanner(System.in);
System.out.println ("Enter message board post:");
String username = scan.nextLine();
String check = username.substring (username.indexOf(" ")+3 , username.length()).toLowerCase()+" ";
int a = check.indexOf(" ^^ ");
int b = check.indexOf (" qey ");
int c = check.indexOf (" $ ");
String first = username.substring (0 , username.indexOf(" "));
int x = 0;
int y =0;
int z = 0;
while (a != -1) {
x++;
check = check.substring(a+1, check.length());
a = check.indexOf(" ^^ "); }
while (b != -1) {
y++;
check = check.substring(b+1, check.length());
b = check.indexOf(" qey "); }
while (c != -1) {
z++;
check = check.substring(c+1, check.length());
c = check.indexOf (" $ "); }
if ( x > 0 || y > 0 || z > 0){
System.out.println ("");
System.out.println ("BAD");
System.out.println (first);
System.out.println ("^^: " +x);
System.out.println ("qey: " +y);
System.out.println ("$: " +z);
}else {
System.out.println ("");
System.out.println ("CLEAN");
}
}
}
最终结果是:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -18
at java.lang.String.substring(String.java:1967)
at Main.main(Main.java:23)
我必须更换哪些部件才能去除螺纹?
我输入B0rg-阻力是徒劳的QeY hahahaha$$^^
它应该显示为
BAD
B0rg
^^: 1
qey:1
$:0
但它作为例外出现了。。。请帮帮我…我假设您只输入了一个单词,因为如果您输入两个,它就可以正常工作。它失败了两次,因为它正在寻找一个它不能做的子字符串,除非有两个单词被分隔符分隔,而分隔符恰好是一个空格。-也许你应该执行int b=check.indexOf qey;在a循环之后,因为a循环修改check。另外,修复你的缩进,因为它们目前使代码很难阅读。为了它的价值,这似乎是AP计算机科学课程edhesive的一个作业,所以这是一个初学者提出的问题。