Java 尝试比较数组时出现空指针异常

Java 尝试比较数组时出现空指针异常,java,methods,null,Java,Methods,Null,因此,当我调用firstCompare方法时,我在这一行得到一个NullPointerExceptionif(numbers1[I].compareTo(numbers2[I])==0{ 但是,打印阵列表明它们已满。请帮助 import java.io.BufferedReader; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.InputStrea

因此,当我调用firstCompare方法时,我在这一行得到一个NullPointerException
if(numbers1[I].compareTo(numbers2[I])==0{

但是,打印阵列表明它们已满。请帮助

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

public class Fugitive {
    public static int counter = 0;
    public static int flag;

    static String[] numbers1 = new String[35];  
    static String[] numbers2 = new String[35];
    static String[] numbers3 = new String[35];

    public static void main(String[] args) throws IOException {
        loadNumbers();
        firstCompare();



    }
    public static void loadNumbers() throws IOException {
        String print;
        BufferedReader in = new BufferedReader(new FileReader("creditCards1.txt"));
        BufferedReader in2 = new BufferedReader(new FileReader("creditCards2.txt"));
        BufferedReader in3 = new BufferedReader(new FileReader("creditCards3.txt"));


        for (int i = 0; i < 34; i++){
                //read in the data
                numbers1[i] = in.readLine();
                numbers2[i] = in2.readLine();
                numbers3[i] = in3.readLine();
                counter++;             
            }
         in.close();         
    }

    public static void firstCompare() {
        boolean found = false;
        for (int i = 0; i < 34; i++){
            if(numbers1[i].compareTo(numbers2[i]) == 0){
                flag = i;
                found = true;
                System.out.println(flag);
            }
        }
        if (!found){
            System.out.println("No matches");
    }
    }

}
导入java.io.BufferedReader;
导入java.io.FileReader;
导入java.io.FileWriter;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.PrintWriter;
公营逃犯{
公共静态整数计数器=0;
公共静态int标志;
静态字符串[]numbers1=新字符串[35];
静态字符串[]numbers2=新字符串[35];
静态字符串[]numbers3=新字符串[35];
公共静态void main(字符串[]args)引发IOException{
loadNumbers();
firstCompare();
}
public static void loadNumbers()引发IOException{
字符串打印;
BufferedReader in=new BufferedReader(新文件读取器(“creditCards1.txt”);
BufferedReader in2=新的BufferedReader(新文件读取器(“creditCards2.txt”);
BufferedReader in3=新的BufferedReader(新文件读取器(“creditCards3.txt”);
对于(int i=0;i<34;i++){
//读入数据
numbers1[i]=in.readLine();
numbers2[i]=in2.readLine();
numbers3[i]=in3.readLine();
计数器++;
}
in.close();
}
公共静态void firstCompare(){
布尔值=false;
对于(int i=0;i<34;i++){
if(numbers1[i])。与(numbers2[i])==0比较{
flag=i;
发现=真;
System.out.println(标志);
}
}
如果(!找到){
System.out.println(“无匹配项”);
}
}
}

您应该将循环中的数字100和10替换为
名称。长度

我们必须查看
名称
的定义和赋值位置,因为这可能是NPE的原因。我还应该注意数组[]name是一个全局变量我猜
name
null
。也许可以尝试调试器?另外,通常最好将数组作为参数传递给
sort
方法。
公共类联系人{//global variables public static int counter=0;static BufferedReader in=new BufferedReader(新的InputStreamReader(System.in));静态int x;静态字符串[]名称=新字符串[101];静态字符串[]编号=新字符串[101];
太好了。因此
名称[0]
(通过
名称[100]
)是
空的。很高兴我们能提供帮助。