“线程中的异常”;“主要”;java.lang.NullPointerException从txt读取元素

“线程中的异常”;“主要”;java.lang.NullPointerException从txt读取元素,java,Java,我是java编程的初学者。我正在尝试开发一个程序,但当我运行下面发布的程序时,它返回了此错误: Exception in thread "main" java.lang.NullPointerException at ChargeAccount1.isValid(ChargeAccount1.java:39) at ChargeAccount1Test.main(ChargeAccount1Test.java:22) 这是我的密码: import java.io.*; impo

我是java编程的初学者。我正在尝试开发一个程序,但当我运行下面发布的程序时,它返回了此错误:

Exception in thread "main" java.lang.NullPointerException
    at ChargeAccount1.isValid(ChargeAccount1.java:39)
    at ChargeAccount1Test.main(ChargeAccount1Test.java:22)
这是我的密码:

import java.io.*;
import java.util.*;

public class ChargeAccount1 {

 private  int [] valid;

    public void main(String[] args) throws IOException {
         FileReader file = new FileReader("Account.txt");

        valid=new int [10];
        int i=1;

            Scanner input = new Scanner(file);
            while(input.hasNext())
            {
                valid[i] = input.nextInt();
                i++;
            }
            input.close();

        }


    public boolean isValid(int number) {
        boolean found = false;
        int n = 0;
        while (!found && n < valid.length) {
            if (valid[n] == number) {
                found = true;
            } else {
                n++;
            }
        }
        return found;
    }
}
public class ChargeAccount1Test {
   public static void main(String[]args)throws IOException{
        ChargeAccount1 in = new ChargeAccount1();
        Scanner scan = new Scanner(System.in);
        System.out.println("Please enter a charge account number:");
        String account = scan.nextLine();
        int number = Integer.parseInt(account);
        if (in.isValid(number)) {
            System.out.println("This is a valid account number");
        } else {
            System.out.println("This is an invalid account number");
        }
   }
}
import java.io.*;
导入java.util.*;
公共类收费帐户1{
私有int[]有效;
public void main(字符串[]args)引发IOException{
FileReader文件=新的FileReader(“Account.txt”);
有效=新整数[10];
int i=1;
扫描仪输入=新扫描仪(文件);
while(input.hasNext())
{
有效[i]=input.nextInt();
i++;
}
input.close();
}
公共布尔值isValid(整数){
布尔值=false;
int n=0;
而(!found&&n
您的
有效
main
方法不是构造函数,它只是一个顶级入口点。因此,当您在.isValid(number)中调用
时,对象内部的
valid
null
,因为您仅在
main
方法中初始化它,这就是为什么您可能首先要调用
in.main(null)
的原因。

请将该行标记为异常,我们没有行号……不要期望执行
ChargeAccount1
main
,因为它不是程序的根。实际上,
ChargeAccount1Test
是根。