Java:编译错误

Java:编译错误,java,compiler-errors,Java,Compiler Errors,我使用两个类,但我运行: C 诺姆:瑞吉斯 Idade:25 出现 线程“main”java.lang.NullPointerException中出现异常 在RegistrasArrayList03xmlte.RegistrasArrayList03_xmlte.地籍(RegistrasArrayList03_xmlte.java:72)处 位于registorArrayList03xmlte.registorArrayList03_xmlte.main(registorArrayList03_

我使用两个类,但我运行:

C

诺姆:瑞吉斯

Idade:25

出现

线程“main”java.lang.NullPointerException中出现异常 在RegistrasArrayList03xmlte.RegistrasArrayList03_xmlte.地籍(RegistrasArrayList03_xmlte.java:72)处 位于registorArrayList03xmlte.registorArrayList03_xmlte.main(registorArrayList03_xmlte.java:23) Java结果:1

lista.remove(p)不工作

/*
 * ArrayList
 */
package registrosarraylist03xmlteste;

import com.thoughtworks.xstream.XStream;
import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;

public class RegistrosArrayList03_xmlteste {

    public static void main(String[] args) {
        ArrayList listaPessoas = new ArrayList();

        // Menu
        char op;
        do {
            op = menu();
            switch (op) {
                case 'C':
                case 'c': // cadastrar
                    cadastrar(listaPessoas);
                    gravarXML(listaPessoas, "teste.xml");
                    break;
                case 'L':
                case 'l': // ler
                    lerXML("teste.xml");
                    break;
                case 'E':
                case 'e': // editar
                    Scanner in = new Scanner(System.in);
                    MyPessoas p1 = new MyPessoas();
                    System.out.print("Digite o ID: ");
                    p1.ID = in.nextInt();
                    System.out.print("Novo nome: ");
                    p1.nome = in.next();
                    System.out.print("Nova idade: ");
                    p1.idade = in.nextInt();
                    editar(listaPessoas, p1);
                    gravarXML(listaPessoas, "teste.xml");
                    listar(listaPessoas);
                    break;
                case 'R':
                case 'r': // remover
                    System.out.println("O comando Remover ainda nao esta pronto.");
                    break;
                default:
                    System.out.println("Opcao invalida.");
                    break;
            }
        } while (op != 'S' && op != 's');
    }

    static char menu() {
        System.out.println("\n ### MENU ### Selecione uma opcao, digitando a primeira letra.");
        System.out.println("Cadastrar  Listar  Editar  Remover  Sair");
        System.out.print("Opcao: ");
        Scanner in = new Scanner(System.in);
        return in.next().charAt(0);
    }

    static void cadastrar(ArrayList lista) {
        Scanner in = new Scanner(System.in);
        MyPessoas p = new MyPessoas();
        // ID gerado automaticamente.
        System.out.print("Nome: ");
        p.nome = in.nextLine();
        System.out.print("Idade: ");
        p.idade = in.nextInt();
        System.out.print("Fone: ");
        p.fone.fone=in.next();
        lista.add(p);
    }

    static void listar(ArrayList lista) {
        System.out.println("ID - Nome - Idade");
        for (int i = 0; i < lista.size(); i++) {
            // Obtem os dados da lista MyPessoas
            MyPessoas p = (MyPessoas) lista.get(i);
            System.out.println(p.ID + "  - " + p.nome + " - " + p.idade);
        }
    }

    static ArrayList lerXML(String filename) {
        XStream xstream = new XStream();
        File arquivo = new File(filename);
        ArrayList listaPessoas = (ArrayList) xstream.fromXML(arquivo);
        listar(listaPessoas);
        return listaPessoas;
    }

    static void gravarXML(ArrayList lista, String filename) {
        XStream xstream = new XStream();
        String xml = xstream.toXML(lista);
        GravarLer Gravar = new GravarLer();
        GravarLer.gravar(xml, filename);
    }

    static void editar(ArrayList lista, MyPessoas p1) {
        System.out.print("Digite o nome: ");
        for (int i = 0; i < lista.size(); i++) {
            // Obtem os dados da lista MyPessoas
            MyPessoas p = (MyPessoas) lista.get(i);
            if (p.ID == p1.ID) {
                p.nome = p1.nome;
                p.idade = p1.idade;
                break;
            }
        }
    }
//    static void remover(ArrayList lista, MyPessoas p1) {
//        // Obtem os dados da lista MyPessoas
//        MyPessoas p = new MyPessoas();
//        System.out.print("Digite o ID: ");
//        rmvID = in.nextInt();
//        lista.remove(p);
//    }
}



/*
 * Classe de MyPessoas
 */
package registrosarraylist03xmlteste;

public class MyPessoas {

    public static int lastID = 1;
    public int ID;
    public String nome;
    public int idade;
    public Fone fone;

    // Adiciona numeracao sequencial ao ID.
    public MyPessoas() {
        ID = MyPessoas.lastID++;
    }
}



package registrosarraylist03xmlteste;

public class Fone {

    public String fone;
}



/*
 * Grava e Le registros em arquivos XML.
 */
package registrosarraylist03xmlteste;

import java.io.File;
import java.io.FileWriter;
import java.util.Scanner;

public class GravarLer {

    static void gravar(String xml, String filename) {
        try {
            FileWriter w = new FileWriter(filename);
            w.write(xml);
            w.flush();
            w.close();
        } catch (Exception e) {
            System.out.println("Erro ao gravar XML: " + e);
        }
    }

    static String ler(String filename) {
        try {
            Scanner in = new Scanner(new File(filename));
            StringBuilder sb = new StringBuilder();
            while (in.hasNext()) {
                sb.append(in.next());
            }
            in.close();
            return sb.toString();
        } catch (Exception e) {
            System.out.println("Erro ao ler XML: " + e);
        }
        return "";
    }

}
/*
*ArrayList
*/
包注册表ArrayList03XmlTeste;
导入com.thoughtworks.xstream.xstream;
导入java.io.File;
导入java.util.ArrayList;
导入java.util.Scanner;
公共类注册表ArrayList03_xmlte{
公共静态void main(字符串[]args){
ArrayList listaPessoas=新的ArrayList();
//菜单
char op;
做{
op=菜单();
开关(op){
案例“C”:
案例“c”://地籍
地籍(listaPessoas);
gravarXML(listaPessoas,“teste.xml”);
打破
案例“L”:
案例“l”:/l
lerXML(“teste.xml”);
打破
案例“E”:
案例“e”://editar
扫描仪输入=新扫描仪(系统输入);
MyPessoas p1=新的MyPessoas();
系统输出打印(“Digite o ID:”);
p1.ID=in.nextInt();
系统输出打印(“Novo nome:”);
p1.nome=in.next();
系统输出打印(“Nova idade:”);
p1.idade=in.nextInt();
editar(listaPessoas,p1);
gravarXML(listaPessoas,“teste.xml”);
listar(listaPessoas);
打破
案例“R”:
案例'r'://删除程序
系统输出打印(O comando Remover ainda nao esta pronto.);
打破
违约:
System.out.println(“Opcao无效”);
打破
}
}while(op!=“S”&&op!=“S”);
}
静态字符菜单(){
System.out.println(“\n#########################选择;
System.out.println(“地籍列表编辑器删除器Sair”);
系统输出打印(“Opcao:”);
扫描仪输入=新扫描仪(系统输入);
返回.next().charAt(0);
}
静态空心地籍(ArrayList lista){
扫描仪输入=新扫描仪(系统输入);
MyPessoas p=新的MyPessoas();
//杰拉德·卡门特。
系统输出打印(“Nome:”);
p、 nome=in.nextLine();
系统输出打印(“Idade:”);
p、 idade=in.nextInt();
系统输出打印(“Fone:”);
p、 fone.fone=in.next();
增加(p);
}
静态无效列表(ArrayList lista){
System.out.println(“ID-Nome-Idade”);
对于(int i=0;i
这是运行时异常,不是编译错误

读取堆栈跟踪。在IDE或编辑器中打开源代码,打开行号显示,然后转到第72行。在该行上取消引用空引用。找到它。

<
fone = new Fone();