java数组使用equals()方法报空指针问题
2016-08-10 20:48
399 查看
在学习使用数组的过程中遇到一个问题,用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.NullPointerException
at 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出循环
希望能帮助到大家~
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.NullPointerException
at 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出循环
希望能帮助到大家~
相关文章推荐
- Java J2SE / 基础类 中关于 为什么要改写java中Object类的equals方法 的 问题
- 使用JAVA的反射机制反射带有数组参数的私有方法
- java基础问题-----数组有没有length()这个方法? String有没有length()这个方法
- 函数指针与函数指针数组的使用方法
- JAVA数组的遍历,使用了新的遍历方法foreach
- Java使用Oracle遇到的最大游标超出问题及其解决方法
- JAVA数组的定义及使用方法
- java基础问题---java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用
- Java使用Oracle遇到的最大游标超出问题及其解决方法
- java 指针 数组的使用
- 使用数组的方法,解决Josephus问题
- JNI学习笔记5——本地方法处理java数组/引用问题/缓存jfieldID/jmethodID
- java使用String.split方法时遇到的问题(转载)
- 马士兵 Java 第5章(1) 分别使用面向对象和面向结构(数组)的设计方法来实现“数三退一”
- java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
- 指针数组作为函数参数的使用问题
- 约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
- 约瑟夫环问题的PHP实现 使用PHP数组内部指针操作函数
- 使用网上流传的一个数据库连接池在Proxy.newProxyInstance处引起 java.lang.ClassCastException 问题的解决方法
- Java的equals方法使用方法