자동차에 대한 정보를 소개하고 파일에 보관하려고합니다. 내 문제는 내가 데이터를 소개 할 때 그것이 내가 원하는 위치에 포인터를 배치하기 위해 "찾기"를 사용하는 NullPointerException이 발생했다는 것을 보여주는 것입니다.검색시 RandomAccesssFile을 사용하는 NullPointerException
저는 Java 클래스를 사용하여 사용자에게 어떤 옵션을 사용할지 묻습니다. 잠시 동안은 자동차 데이터를 추가 할 필요가 없습니다. 그리고 내가 같은
package Tema1AccesoAleatiroFicheros;
import java.io.IOException;
import java.util.Scanner;
public class Vista {
public static void main(String[] args) throws IOException {
Scanner sc=new Scanner(System.in);
Controlador coche=new Controlador();
System.out.println("Eliga opción:");
System.out.println("1-Ingresar coche:");
System.out.println("2-Modificar registro:");
System.out.println("3-Salir.");
int opcion=sc.nextInt();
Controlador.crearFichero();
while (opcion!=3)
{
switch(opcion)
{
case 1:
añadir();
break;
case 2:
modificar();
break;
}
System.out.println("Eliga opción:");
System.out.println("1-Ingresar coche:");
System.out.println("2-Modificar registro:");
System.out.println("3-Salir.");
opcion=sc.nextInt();
}
}
public static void añadir()
{
Scanner sc=new Scanner(System.in);
String[] array=new String[7];
System.out.println("Introduzca código:");
String cod=sc.next();
System.out.println("Introduzca marca:");
String marca=sc.next();
System.out.println("Introduzca modelo:");
String modelo=sc.next();
System.out.println("Introduzca matricula:");
String matricula=sc.next();
System.out.println("Introduzca potencia en caballos:");
int potencia=sc.nextInt();
System.out.println("Introduzca número de plazas:");
int plazas=sc.nextInt();
System.out.println("Introduzca número de puertas:");
int puertas=sc.nextInt();
array[0]=cod;
array[1]=marca;
array[2]=modelo;
array[3]=matricula;
array[4]=Integer.toString(potencia);
array[5]=Integer.toString(plazas);
array[6]=Integer.toString(puertas);
// array[3]=new String(cod);
// array[1]=new String(marca);
// array[2]=new String(modelo);
// array[3]=new String(matricula);
// array[4]=new String(Integer.toString(potencia));
// array[5]=new String(Integer.toString(plazas));
// array[6]=new String(Integer.toString(puertas));
Controlador.añadirCoche(array);
}
public static void modificar()
{
Scanner sc=new Scanner(System.in);
System.out.println("Introduzca código:");
String codigo=sc.next();
// if(Controlador.buscarRegistro(codigo)!=-1)
{
// int pos=Controlador.buscarRegistro(codigo);
System.out.println("Introduzca código:");
String cod=sc.next();
System.out.println("Introduzca marca:");
String marca=sc.next();
System.out.println("Introduzca modelo:");
String modelo=sc.next();
System.out.println("Introduzca matricula:");
String matricula=sc.next();
System.out.println("Introduzca potencia en caballos:");
int potencia=sc.nextInt();
System.out.println("Introduzca número de plazas:");
int plazas=sc.nextInt();
System.out.println("Introduzca número de puertas:");
int puertas=sc.nextInt();
Modelo mod=new Modelo(cod,marca,modelo,matricula,potencia,plazas,puertas);
// Controlador.setCoche(pos, mod);
}
}
}
$
package Tema1AccesoAleatiroFicheros;
import static Tema1AccesoAleatiroFicheros.Controlador.direccion;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.RandomAccessFile;
import java.util.logging.Level;
import java.util.logging.Logger;
public class Controlador {
static String direccion="C:\\Users\\Noneking2\\Desktop\\prueba.dat";
public static RandomAccessFile flujo;
private static int numRegistros=0;
private static int tamRegistro=7;
public static void crearFichero()
{
File comprobar=new File(direccion);
if(!comprobar.exists())
{
try
{
File fichero=new File(direccion);
RandomAccessFile random=new RandomAccessFile(fichero,"rw");
// FileOutputStream fileout=new FileOutputStream(fichero);
}
catch (FileNotFoundException ex)
{
Logger.getLogger(Controlador.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
public static void añadirCoche (String [] array)
{
try
{
flujo.seek(numRegistros*tamRegistro);
}
// catch (NullPointerException n)
// {
// System.out.println("NullPointerException success");
// }
catch (IOException ex)
{
Logger.getLogger(Controlador.class.getName()).log(Level.SEVERE, null, ex);
}
for(int i=0;i<array.length;i++)
{
// try
// {
// flujo.writeUTF(array[i]);
// }
// catch (IOException ex)
// {
// Logger.getLogger(Controlador.class.getName()).log(Level.SEVERE, null, ex);
// }
}
numRegistros++;
}
}
A [최소 테스트 케이스] 구성주세요 (http://stackoverflow.com/help/mcve). –