报错:Exception in thread "main" java.lang.NullPointerExceptionException in thread "main" java.lang.NullPointerException
at org.shp.dao.InputData.getInt(InputData.java:20)
at org.shp.dao.Menu.showMain(Menu.java:23)
at org.shp.dao.Menu.<init>(Menu.java:12)
at org.shp.dao.Main.main(Main.java:5)
我的InputData 中的第20 行是:if(!(str.matches("\\[d]"))) // 是对输入字符的校验,不知道是什么地方错了呀,各位大哥帮忙看看。。还有就是:Exception in thread "main" java.lang.NullPointerException 是什么地方错了呀
at org.shp.dao.InputData.getInt(InputData.java:20)
at org.shp.dao.Menu.showMain(Menu.java:23)
at org.shp.dao.Menu.<init>(Menu.java:12)
at org.shp.dao.Main.main(Main.java:5)
我的InputData 中的第20 行是:if(!(str.matches("\\[d]"))) // 是对输入字符的校验,不知道是什么地方错了呀,各位大哥帮忙看看。。还有就是:Exception in thread "main" java.lang.NullPointerException 是什么地方错了呀
import java.io.IOException;
import java.io.InputStreamReader;public class InputData {
private BufferedReader buf = null;
public InputData(){
buf = new BufferedReader(new InputStreamReader(System.in));
}
public int getInt(){
int temp = 0;
String str = null;
boolean flag = true;
while(flag){
this.getString();
if(!(str.matches("\\[d]"))){
System.out.println("输入的内容必须是整数,请重新输入:");
}else {
temp = Integer.parseInt(str);
flag = false;
}
}
return temp;
}
public String getString(){
String str = null;
try{
str = buf.readLine();
}catch (IOException e){
e.printStackTrace();
}
return str;
}
public float getFloat(){
float f = 0.0f;
String str = null;
boolean flag = true;
while(flag){
str = this.getString();
if(!(str.matches("\\d+.?\\{1,2}"))){
System.out.println("输入的内容必须是小数:2位小数!请重新输入:");
}else{
f = Float.parseFloat(str);
flag = false;
}
}
return f;
}}
private InputData input = null;
private PersonOperate po = null;
private boolean sflag = true;
private boolean wflag = true;
public Menu(){
this.input = new InputData();
while(true){
this.showMain();
}
}
public void showMain(){
System.out.println(" 学校信息管理程序 ");
System.out.println(" 1: 学生信息管理 ");
System.out.println(" 2: 工人信息管理 ");
System.out.println(" 3: 退出系统 ");
System.out.println("\n\n请选择所需要的操作:");
switch(input.getInt()){
case 1 : {
this.sflag = true;
while(sflag){
this.showStudent();
}
break;
}
case 2 : {
this.wflag = true;
while(wflag){
this.showWorker();
}
break;
}
case 3 : {
System.out.println("系统退出,拜拜~~~");
System.exit(1);
break;
}
default : {
System.out.println(" 选择错误,请重新选择 !");
break;
}
}
}
public void showStudent(){
this.po = new StudentOperate();
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("\n\n请选择具体的操作:");
switch(this.input.getInt()){
case 1: {
this.po.add();
break;
}
case 2: {
this.po.findAll();
break;
}
case 3: {
this.po.findByLike();
break;
}
case 4: {
this.po.delete();
break;
}
case 5: {
this.po.update();
break;
}
case 6: {
this.sflag = false;
break;
}
default: {
System.out.println(" 选择错误,请重新选择 !");
break;
}
}
}
public void showWorker(){
this.po = new WorkerOperate();
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("\n\n请选择具体的操作:");
switch(this.input.getInt()){
case 1: {
this.po.add();
break;
}
case 2: {
this.po.findAll();
break;
}
case 3: {
this.po.findByLike();
break;
}
case 4: {
this.po.delete();
break;
}
case 5: {
this.po.update();
break;
}
case 6: {
this.wflag = false;
break;
}
default: {
System.out.println(" 选择错误,请重新选择 !");
break;
}
}
}}
我调出: 学校信息管理程序
1: 学生信息管理
2: 工人信息管理
3: 退出系统
请选择所需要的操作:可是一输入任何一个键,就出现:Exception in thread "main" java.lang.NullPointerException
at org.shp.dao.InputData.getInt(InputData.java:20)
at org.shp.dao.Menu.showMain(Menu.java:23)
at org.shp.dao.Menu.<init>(Menu.java:12)
at org.shp.dao.Main.main(Main.java:5)
我把:str = new INputData().toString 就可以了
呵呵!