问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请教java大神,错误提示Exception in thread"main"java.lang.NullPoin...

发布网友 发布时间:2024-10-04 01:18

我来回答

5个回答

热心网友 时间:2024-10-05 16:06

看图片。

import java.util.*;
import java.text.*;

public class Application {//一个应用程序要有一个public的主类
static Yhzh yhzh = new Yhzh();
private static Boolean isSuccess = false;

public static void main(String[] args) {
csh();
}

public static void cd() {
String xz = "0";
while (!xz.equals("6")) {

System.out.println("********************************");
System.out.println("** 1.存款                      *");
System.out.println("** 2.取款                      *");
System.out.println("** 3.查询账户信息              *");
System.out.println("** 4.修改密码                  *");
System.out.println("** 5.遍历所有帐号信息          *");
System.out.println("** 6.退出                      *");
System.out.println("********************************");
Scanner sr = new Scanner(System.in);
System.out.print("\n*请输入相应字符启用功能:");
xz = sr.next();
switch (Integer.parseInt(xz)) {
case 1:
yhzh.ck();
break;
case 2:
yhzh.qk();
break;
case 3:
yhzh.cx();
break;
case 4:
yhzh.xgmm();
break;
case 5:
yhzh.bianli();
break;
}
}
}

public static void csh() {
String xz = "0";
while (!xz.equals("3")) {
System.out.println("********************************");
System.out.println("**  1.登录   2.开户   3.退出  **");
System.out.println("********************************");
Scanner sr = new Scanner(System.in);
System.out.print("\n*请输入相应字符启用功能:");
xz = sr.next();
switch (Integer.parseInt(xz)) {
case 1:
dl();
cd();
break;
case 2:
yhzh.kh();
break;
}
if (Integer.parseInt(xz) == 3)
System.out.println("*已退出!\n");
}
}

public static void dl() {
Scanner sr = new Scanner(System.in);
while(true){
System.out.print("*请输入您的姓名:");
String xm = sr.next();
System.out.print("*请输入您的密码:");
String mm = sr.next();
isSuccess =  yhzh.ss(xm, mm);//定义一个成功与否标识位
if (isSuccess) {
break;//成功,跳出死循环
}else {
System.out.print("*姓名和密码不匹配 !");
continue;//失败,继续
}
}

// while (true) {//这里while(true)死循环,永远也跳不出来
// System.out.print("*姓名和密码不匹配 !");
// System.out.print("*请输入您的姓名:");
// xm = sr.next();
// System.out.print("*请输入您的密码:");
// mm = sr.next();
// }
}

}

class Yhzh {
private static int xh = 1;
public static int dqdl = -1;
private static String[] zh = new String[100];
private static String[] mm = new String[100];
private static String[] xm = new String[100];
private static String[] khrq = new String[100];
private static String[] ye = new String[100];
static String yn = "n";

public Yhzh() {
zh[0] = "100001";
ye[0] = "012,580.00";
mm[0] = "123456";
xm[0] = "ql";
khrq[0] = "2015-01-01 00:01";
}

public void kh() {
Scanner sr = new Scanner(System.in);
while (!yn.equals("y")) {
if (xh + 1 < 10)
zh[xh] = "100" + "00" + Integer.toString(xh + 1);
else if (xh > 9 && xh < 100)
zh[xh] = "100" + "0" + Integer.toString(xh);
else
System.out.print("*抱歉,暂时只支持99位储户!");
System.out.print("*请输入开户人姓名:");
xm[xh] = sr.next();
if (xm[xh].length() == 2)
xm[xh] = xm[xh].charAt(0) + "  " + xm[xh].charAt(1);
System.out.print("*请设置6位数密码:");
mm[xh] = sr.next();
while (mm[xh].length() != 6) {
System.out.print("*您输入的密码并非6位数,请重新输入:");
mm[xh] = sr.next();
}
System.out.println("*密码设置成功 !");
ye[xh] = "000,000.00";
Date sj = new Date();
SimpleDateFormat sjgs = new SimpleDateFormat("YYYY-MM-dd HH:mm");
khrq[xh] = sjgs.format(sj);
System.out.println("*您本次开户的信息如下所示 !");

System.out
.println("\n*********************************************************************");
System.out
.println("*   帐号        余额       姓名       密码          注册日期        *");
System.out.println("*  " + zh[xh] + "    " + ye[xh] + "   "
+ xm[xh] + "     " + mm[xh] + "     " + khrq[xh] + "    *");
System.out
.println("*********************************************************************\n");

System.out.print("*输入y确认,输入其它任何字符重新开户:");
yn = sr.next();
if (yn.equals("y"))
xh++;
}
yn = "n";
}

public void ck() {
System.out.print("*请输入您的帐号:");
}

public void qk() {
}

public void cx() {
}

public void xgmm() {
}

public boolean ss(String m, String n) {//改成这样
if (xm[0].equals(m) && mm[0].equals(n)){
return true;
}else {
return false;
}
/*这里不需要for循环(你想登陆多少次去??而且你的用户名和密码只是在数组xm[0],mm[0]里面,
你的写法xh + 1 为 2,他要循环两次当。xm[1],mm[1]的时候肯定报控指针错误,
要不你就这样改m.equals(xm[i])&&n.equals(mm[i]),这样的意思是m,n是有东西进来的,
前面的数值不可能为空,equals后面的值为空就是不等于,它不会报空指针异常)*/
// for (int i = 0; i < xh + 1; i++) {
// dqdl = i + 1;
// }
}

public void bianli() {
System.out
.println("\n*********************************************************************");
System.out
.println("*   帐号        余额       姓名       密码          注册日期        *");
for (int i = 0; i < xh + 1; i++) {
System.out.println("*  " + zh[i] + "    " + ye[i] + "   " + xm[i]
+ "     " + mm[i] + "     " + khrq[i] + "    *");
}
System.out
.println("*********************************************************************\n");
}

}

热心网友 时间:2024-10-05 16:03

private static int xh=1;改成0,否则ss()函数里面第二次循环会报空指针(只有一个登陆用户)

ss函数应该要返回一个bool值,确认账号密码是否正确。如果正确就不需要执行下面的while。

while里面没有退出循环的地方,会是一个死循环。

热心网友 时间:2024-10-05 16:03

错误里是Yhzh的ss方法抛出的, 应该是xm[i]和mm[i]其中有数据为null的,

热心网友 时间:2024-10-05 16:04

NullPointerException
你可能使用了没有赋值的变量 比如 public String str;
这时str=null;
你用了就会报错比如 system.out.print(str);
或者使用了没有初始化的对象
public student stu;
system.out.print(stu.getName);

热心网友 时间:2024-10-05 16:05

public void ss(String m, String n) {
//if执行完毕之后i++了!然后在if,数组空指针异常了
for (int i = 0; i < xh + 1; i++) {
if (xm[i].equals(m) && mm[i].equals(n))
dqdl = i + 1;
}
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
现在波兰的签证率高不高 去波兰如何办签证 去波兰办签证好办理吗 波兰签证好签吗 win7 多重网络 教师资格证普通话要多少级 想考教师资格证普通话必须过几级 qq影视会员SVIP和超级影视VIP的区别在哪里? 一小撮怎么造句 盛行一时怎么造句 自学JAVA,遇到以下问题,跪求java大神帮忙。需要class interface或者enum... 日本东京板桥常盤台64万回报7.71% 我叫罗诗雅,取一个好听一点的英文名字,寓意:高贵,优雅,公主。至少... 育婴师2021年是广州急需工种吗 3我的大便不成型,也不是拉稀那种,有半年了,怎么回师?而且一天的去好几... 扬州露营地点推荐 哪里有户外露营的地方 北京住房公积金贷款申请流程 我最近一天要大便好几次。而且拉得都很稀...像水一样,而且黑黑的。到底... ...一天三次,现在已到五、六次之多,拉出来的大便时稀时软,就是不硬... 憨豆先生的假期演职员表 珠宝首饰设计和环境艺术设计哪个就业更好,希望好心人可以帮忙指点下,谢 ... 快一周岁的宝宝可以吃各种豆子吗 一岁多宝宝能吃什么豆子 年轻人掉发严重,还是老人掉发严重? 圣斗士ND是什么意思?据说是一个新的情节,请给我简要介绍下 东埔镇如何打造港城崛起的新格局? 山亭镇莆田市秀屿区山亭镇 昂克赛拉的保养费用比同级车贵吗? 昂克赛拉基础保养一次费用是多少 莆田市秀屿区临港工业园区功能分区 喝了酵素粉拉肚子怎么回事 电脑CPU多少度会自动关机? ...开4G待机挂一个QQ 后台啥都没有 一个小时费电百分之五这个正常吗... 魅族mx5待机每一小时消耗2格电正常吗 香港恒生银行(HANG SENG BANK)个人户开户要求和资费 我想请问一下 恒生银行转账给湖南常德的工商银行 转账的话大概要多少... 奶油打坏了要怎样挽救 首都师范大学 教育硕士 去年的分数线是多少呀,,专业课要考多少份才成... 胎儿头位高是什么意思? Win7建立的无线wifi怎么没Internet访问?我都开了共享 4ocr钢材硬度45--50度,用什么热处理方法好 金庸群侠传x1.106哪些武功没有残页 中国女排进入四强有没有资格争夺金牌 我们公司最近分包到一个建筑安防类的工程,主要就是装监控那些,请问我需 ... 非法行医的危害有哪些? 意大利米兰是一个怎样的城市? 王者荣耀明世隐疑决卦和虹云星官哪个好_明世隐疑决卦和虹云星官皮肤手感... 中国戏曲学院这个学院怎么样? 如何在华为荣耀7i上关闭未读信息指示灯? 中国戏曲学院毕业证