所以我有这段代码:
package Firstpack;
import java.io.*;
import java.util.*;
public class Main {
public static void menu() {
System.out.println("Welcome");
System.out.println("1. Add a record ");
System.out.println("2. See all records ");
System.out.println("3. See a category");
System.out.println("4. Total spend(Year)");
System.out.println("5. Spend in a month");
System.out.println("6. Chose by index");
System.out.println("7. Exit ");
System.out.print(">");
Scanner in = new Scanner(System.in);
int enteredInt = in.nextInt();
in.close();
switch (enteredInt) {
case 1:
recording();
break;
case 2:
System.out.print(" You have chosen -> See all records");
break;
case 3:
System.out.print(" You have chosen -> See a category");
break;
case 4:
System.out.print(" You have chosen -> Total spend(Year)");
break;
case 5:
System.out.print(" You have chosen -> Spend in a month");
break;
case 6:
System.out.print(" You have chosen -> Chose by index");
break;
case 7:
System.out.print(" Bye! ");
break;
default:
menu();
}
}
public static void recording() {
System.out.println(" You have chosen -> Add a record");
record rec = new record();
Scanner in = new Scanner(System.in);
System.out.print("Enter Amount > ");
rec.amount = in.nextDouble();
System.out.print("Enter Category > ");
rec.category = in.next();
System.out.print("Enter Details > ");
rec.details = in.next();
try {
FileWriter fw = new FileWriter("findme.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write(String.valueOf(rec.amount));
bw.write(rec.category);
bw.write(rec.details);
bw.close();
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
menu();
}
}
它让我觉得这个:
Exception in thread "main" java.lang.NullPointerException
at java.io.Writer.write(Unknown Source)
at Firstpack.Main.recording(Main.java:68)
at Firstpack.Main.menu(Main.java:25)
at Firstpack.Main.main(Main.java:82)
我不知道如何解决这个问题。这有什么不对?
答案 0 :(得分:1)
问题在于您在菜单方法中调用了in.close()
。 in.close()
不仅会关闭Scanner
对象,而且还会关闭System.in
。当您输入1作为菜单选择时,您的recording()
方法会被调用,这会创建一个新的Scanner
,尝试使用现已关闭的System.in
。
这是一篇解决类似问题的帖子: Trying to write a method that checks user input in JAVA, getting NoSuchElementException