当我为n添加while循环时,会出现一个越界异常,如果我把它取出它是完美的。我稍后会将数据添加到数组中,但它会产生错误....
String day = date.substring(0, spacePos);
例外情况如下:
线程中的异常" main" java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:-1 at java.lang.String.substring(Unknown Source) 在HelloWorld.main(HelloWorld.java:21)
Scanner userInputScanner = new Scanner(System.in); // I/O Stream
String months[] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sept","Oct","Nov","Dec"}; // Months to Compare
int n = userInputScanner.nextInt();
while(n != 0)
{
System.out.print("Enter Data: ");
String date = userInputScanner.nextLine(); // Input and Store Data
String output; // Program Output
int spacePos = date.indexOf(" "); // Data before first space
int lastSpacePos = date.lastIndexOf(" "); // Data after last space
String day = date.substring(0, spacePos); // First String
String month = date .substring(spacePos + 1, lastSpacePos); // Middle String
String year = date.substring(lastSpacePos + 1); // Last String
output = year + "-" + month + "-" + day; // Output new values
System.out.print(output);
}
有人可以帮我解决这个错误吗?如果您需要更多数据,请询问。
答案 0 :(得分:1)
当您使用int n = userInputScanner.nextInt();
时,您会留下下一个nextLine()
电话立即消耗的尾随换行符。您得到一个空行,因此String
次来电无效。
int n = userInputScanner.nextInt();
while(n != 0)
{
System.out.print("Enter Data: ");
String date = userInputScanner.nextLine();
if (date.length() == 0) continue; // <-- retry.
或者,像
int n = userInputScanner.nextInt();
userInputScanner.nextLine(); // <-- consume trailing newline.
while(n != 0)
{
System.out.print("Enter Data: ");
String date = userInputScanner.nextLine();