gpt4 book ai didi

java - 在包含两个对象的数组中,如何在 (1) 处获得越界异常?

转载 作者:行者123 更新时间:2023-12-02 01:28:27 24 4
gpt4 key购买 nike

我收到“ArrayIndexOutOfBoundsException: 1”错误,但仅当输入“q”退出程序时才出现。

import java.util.Scanner;

public class ParseStrings {
public static void main(String[] args) {
Scanner scnr = new Scanner(System.in);
Scanner inSS = null;
String userInfo = "";
String firstWord = "";
String secondWord = "";
String[] names = {"",""};


System.out.println("Enter input string: ");
userInfo = scnr.nextLine();

boolean isFound = userInfo.contains(",");

if (isFound == false) {
System.out.println("Error: No comma in string");
System.out.println("Enter input string: ");

userInfo = scnr.nextLine();
isFound = userInfo.contains(",");
}

while (isFound) {

names = userInfo.split(",");

firstWord = names[0];
secondWord = names[1]; //<----- LINE 33

System.out.println("First word: " + firstWord.trim());
System.out.println("Second word: " + secondWord.trim());
System.out.println("");
System.out.println("");

System.out.println("Enter input string: ");
userInfo = scnr.nextLine();

}

if (userInfo == "q") {
System.exit(0);
}
return;
}
}

该程序的目的是分隔由两个单词组成的字符串/行,并用“,”分隔。这部分工作完美,但是当输入“q”退出时程序失败。

线程“main”中出现异常 java.lang.ArrayIndexOutOfBoundsException: 1 在 ParseStrings.main(ParseStrings.java:33)

最佳答案

这里:

names = userInfo.split(",");

userInfo仅包含q时,names将为{"q"},即仅包含一个元素。

因此,names 的第二个元素 names[1] 不存在。

因此出现ArrayIndexOutOfBoundsException

你可以像这样重构它:

while (isFound) {
if (userInfo.equals("q")) { // btw, notice the 'equals' instead of ==
System.exit(0);
}
names = userInfo.split(",");
firstWord = names[0];
secondWord = names[1];
[...]

关于java - 在包含两个对象的数组中,如何在 (1) 处获得越界异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56490991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com