【发布时间】:2022-01-10 19:01:54
【问题描述】:
问题是识别字符串是否有逗号并从原始字符串中输出子字符串。
这是我的代码:
import java.util.Scanner;
import java.util.*;
import java.io.*;
public class ParseStrings {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
String fullString = "";
int checkForComma = 0;
String firstSubstring = "";
String secondSubstring = "";
boolean checkForInput = false;
while (!checkForInput) {
System.out.println("Enter input string: ");
fullString = scnr.nextLine();
if (fullString.equals("q")) {
checkForInput = true;
}
else {
checkForComma = fullString.indexOf(',');
if (checkForComma == -1) {
System.out.println("Error: No comma in string");
fullString = scnr.nextLine();
}
else {
continue;
}
firstSubstring = fullString.substring(0, checkForComma);
secondSubstring = fullString.substring(checkForComma + 1, fullString.length());
System.out.println("First word: " + firstSubstring);
System.out.println("Second word: " + secondSubstring);
System.out.println();
System.out.println();
}
}
return;
}
}
我在编译时不断收到的错误是这样的:
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: begin 0, end -1, length 10
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:3319)
at java.base/java.lang.String.substring(String.java:1874)
at ParseStrings.main(ParseStrings.java:34)
我对编程还是有点陌生,以前从未见过这种类型的错误,有什么方法可以解决这个问题以及可能是什么原因造成的?
【问题讨论】:
-
我怀疑
continue是否是您要放入第二个else块中的内容。我怀疑后面的六行实际上应该在else,而不是continue。 -
另外,当您编译您的程序时,您没有看到该错误。您在运行程序时看到了它。
标签: java string validation parsing