私は2つのクラスを使用していますが、私は実行しています:
C
名前:レジス
イダデ:25
現れる
registrosarraylist03xmlteste.RegistrosArrayList03_xmlteste.main(RegistrosArrayList03_xmlteste.java:23) の registrosarraylist03xmlteste.RegistrosArrayList03_xmlteste.cadastrar(RegistrosArrayList03_xmlteste.java:72) でのスレッド「メイン」java.lang.NullPointerException での例外 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 "";
}
}