Java:编译错误
我使用两个类,但我运行: C 诺姆:瑞吉斯 Idade:25 出现 线程“main”java.lang.NullPointerException中出现异常 在RegistrasArrayList03xmlte.RegistrasArrayList03_xmlte.地籍(RegistrasArrayList03_xmlte.java:72)处 位于registorArrayList03xmlte.registorArrayList03_xmlte.main(registorArrayList03_xmlte.java:23) Java结果:1 和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_
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();