我不能在数组上使用方法设置器setMarcaCelular

时间:2018-11-09 13:48:14

标签: java arrays

我无法在数组clientes [i]上使用方法setter setMarcaCelular。我认为问题是交换机,但是我现在不知道为什么,我正在学习Java,所以我很快就迷失了自我。这是我的错误。对不起,我的英语不好。 线程“主”中的异常java.lang.NullPointerException     在principal1.Principal1.main(Principal1.java:30)

package principal1;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import recursos.Cliente;

public class Principal1 {


public static void main(String[] args) throws IOException{
    BufferedReader in =new BufferedReader(new InputStreamReader(System.in));
    int opc=0;
    int ventasLG=0;

    Cliente clientes[]=new Cliente[5];


    for (int i = 0; i < clientes.length; i++) {

        String nombre;
        String marcaCelular="";
        int celular=0;

        System.out.println("Ingrese marca del celular:\n1.-Nokia\n2.-Motorola"
                + "\n3.-LG\n4.-Kyocera");
        celular=Integer.parseInt(in.readLine());
        switch(celular){
            case 1:
                clientes[i].setMarcaCelular("Nokia");
                System.out.println("Ingrese nombre del cliente");
                nombre=in.readLine();
                System.out.println("Ingrese cedula de identidad");
                int cedulaIdentidad=Integer.parseInt(in.readLine());
                System.out.println("Ingrese precio del celular");
                int precioCelular=Integer.parseInt(in.readLine());
                clientes[i]=new Cliente(nombre, cedulaIdentidad, marcaCelular, precioCelular);
                  break;
            case 2:
                clientes[i].setMarcaCelular("Motorola");
                System.out.println("Ingrese nombre del cliente");
                nombre=in.readLine();
                System.out.println("Ingrese cedula de identidad");
                cedulaIdentidad=Integer.parseInt(in.readLine());
                System.out.println("Ingrese precio del celular");
                precioCelular=Integer.parseInt(in.readLine());
                clientes[i]=new Cliente(nombre, cedulaIdentidad, marcaCelular, precioCelular);
                break;
            case 3:
                clientes[i].setMarcaCelular("LG");
                System.out.println("Ingrese nombre del cliente");
                nombre=in.readLine();
                System.out.println("Ingrese cedula de identidad");
                cedulaIdentidad=Integer.parseInt(in.readLine());
                System.out.println("Ingrese precio del celular");
                precioCelular=Integer.parseInt(in.readLine());
                clientes[i]=new Cliente(nombre, cedulaIdentidad, marcaCelular, precioCelular);
                ventasLG++;
                break;
            case 4:
                clientes[i].setMarcaCelular("Kyocera");
                System.out.println("Ingrese nombre del cliente");
                nombre=in.readLine();
                System.out.println("Ingrese cedula de identidad");
                cedulaIdentidad=Integer.parseInt(in.readLine());
                System.out.println("Ingrese precio del celular");
                precioCelular=Integer.parseInt(in.readLine());
                clientes[i]=new Cliente(nombre, cedulaIdentidad, marcaCelular, precioCelular);
                break;
            default:
                System.out.println("Opcion incorrecta");

1 个答案:

答案 0 :(得分:3)

创建数组

 Cliente clientes[]=new Cliente[5];

并不意味着已经创建了5个Cliente实例并将其添加到阵列中。您必须手动完成

Cliente clientes[]=new Cliente[5];
for (int i = 0; i < clientes.lenght; i++) {
    clientes[i] = new Cliente();
    // do whatever you want
}