Java中调用不同包的类中的数组时,删除元素抛出空指针异常。

packageInfomation;publicclassData{publicString[]username=newString[20];publicString[]... package Infomation;

public class Data {
public String[] username = new String[20];
public String[] password = new String[20];

public void userInfo(){
username[0] = "username";
password[0] = "password";
}
}

package Program;
import Infomation.Data;

public class SC_Control {
private void deleteUser() {
data.userInfo();
System.out.println("请输入需要删除的用户名:");
String s1 = s.next();
System.out.println(printArray(data.username, s1));
if (printArray(data.username, s1) != -1) {
data.username[printArray(data.username, s1)] = null;
data.password[printArray(data.username, s1)] = null;
System.out.println("删除成功");
} else {
System.out.println("删除失败");
}
}

public int printArray(String[] array, String value) {
data.userInfo();
for (int i = 0; i < array.length; i++) {
if (array[i] == value) {
return i;
}
}
return -1;
}

代码如上,无论如何都返回值-1。
此外在用Arrays.asList(data.username).contains(username)时可以正常获取数组内容。
另外这种删除方法可行吗?删除后将每个元素提前。
展开
 我来答
飛天宝宝
2018-04-17 · TA获得超过216个赞
知道小有建树答主
回答量:355
采纳率:64%
帮助的人:80.8万
展开全部
你都重定义为空了,还和values比较,肯定空指针啊
建议values. equal(arr[i])
或者不要赋为null,赋为""。
追问
也就是出错的原因是
data.password[printArray(data.username, s1)]
这句么?
脉积半破景13
2018-04-17 · 超过53用户采纳过TA的回答
知道小有建树答主
回答量:126
采纳率:84%
帮助的人:34.5万
展开全部
userinfo不知道是在干嘛。。。而且你没有实例化data 里面的东西也不是静态的,太乱了。
代码不全,截图发出来好点,直接复制的文本乱码了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式