在学习使用数组的过程中遇到一个问题,用scanner为数组赋值后,使用equals()方法报空指针错误
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// 新建数组存放3个DVD信息
String[] names = new String[6];
names[0] = "罗马假日";
names[1] = "风声鹤唳";
names[2] = "浪漫满屋";
Scanner input = new Scanner(System.in);
System.out.println("-->借出DVD");
System.out.println("请输入要借出的DVD的名字:");
String want = input.next();
for (int i = 0; i < names.length; i++) {
if (names[i].equals(want)) {
System.out.println("借出DVD成功!");
}
}
}
}
Exception in thread "main" java.lang.NullPointerExceptionat Manager.main(Manager.java:130)
经过一番的查找资料,问题在names数组有null的存在,names[3],names[4],,names[5]未被赋值,其值默认为null
当names[]调用equals()方法时,equals检测到有null的存在就会报错
对此我对程序作了修改,如下:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// 新建数组存放3个DVD信息
String[] names = new String[6];
names[0] = "罗马假日";
names[1] = "风声鹤唳";
names[2] = "浪漫满屋";
Scanner input = new Scanner(System.in);
System.out.println("-->借出DVD");
System.out.println("请输入要借出的DVD的名字:");
String want = input.next();
for (int i = 0; i < names.length; i++) {
if(names[i] == null){
System.out.println("DVD不存在.");
break;
}else if(names[i].equals(want)){
System.out.println("DVD借出成功.");
break;
}
}
}
}
通过if语句加一个判断names[i]是否为null,当names[i]为null时,表明数组中没有和你输入的值相等的值,则输出"DVD不存在",break出循环
当数组中有和输入的值相等的值时,则显示"DVD借出成功",再break出循环
希望能帮助到大家~