这是一个存储 10 个唯一字符串的程序。如果用户输入数组中已存在的字符串,用户将收到错误消息。我的代码对于我输入的第一个字符串运行良好,但之后抛出异常,我不知道为什么。我该如何解决这个问题并使其正常工作?
附注我不想使用 Set。我想用数组来实现。
编辑:错误名称:线程“main”中的异常 java.lang.NullPointerException Java 结果:1
谢谢。
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int stringNumber = 0;
String[] stringArray = new String[10];
for (int i = 0; i <= stringArray.length; i++) {
boolean itemExists = false;
out.println("\nEnter a string");
String input = keyboard.next();
if (i > 0) {
for (int j = 0; j < stringArray.length; j++) {
if (stringArray[j].equalsIgnoreCase(input)) {
itemExists = true;
out.println("Item \"" + input + "\" already exists.");
break;
} else {
continue; // Unhandled exception error. If I don't have "continue" here, the program doesn't work properly after the first number.
}
}
}
if (itemExists == false) {
stringArray[stringNumber] = input;
out.println("\"" + stringArray[stringNumber] + "\"" + " has been stored.");
} else {
out.println("Try again.");
}
PrintArray(stringArray);
stringNumber++;
}
}
public static void PrintArray(String[] stringArray) {
for (int i = 0; i <= 9; i++) {
if (stringArray[i] == null) {
out.print(" ");
} else {
out.print("\nYour strings:");
out.print(" " +stringArray[i] + " ");
}
}
}
最佳答案
你的问题是这个if (stringArray[j].equalsIgnoreCase(input)) {
,你引用了空元素,因为你的数组不包含任何内容。
你可以解决这个问题
if (input.equalsIgnoreCase(stringArray[j])) {
现在,您将该值与可能为空的数组项进行比较。
查看示例代码
private final static Scanner keyboard = new Scanner(System.in);
private final static String[] stringArray = new String[10];
public static void main(String[] args) {
int stringNumber = 0;
for (int i = 0; i < stringArray.length; i++) {
System.out.println("\nEnter a string");
String input = readNextItem();
if(isInputExist(input)) {
System.out.println("Item \"" + input + "\" already exists.");
System.out.println("Try again.");
} else {
stringArray[stringNumber++] = input;
System.out.println("\"" + input + "\"" + " has been stored.");
}
printArray(stringArray);
}
}
private static String readNextItem() {
return keyboard.next();
}
private static boolean isInputExist(String input) {
for(String stored : stringArray) {
if(input.equalsIgnoreCase(stored)) {
return true;
}
}
return false;
}
关于Java - 在 for 循环中使用 "continue"时出现未处理的异常错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19570774/