Add a new object in a list in another class

Asked

Viewed 304 times

0

I populated a list of dishes from a restaurant, after that, I added a function for the user to create a new dish when they want. However, in the method to create the new dish, I cannot add to the list that is in another class. The code is this:

File Processalists.java:

List<Prato> listaPratos = new ArrayList<>(); // preciso adicionar o novo objeto nessa lista através do método

    while (leitorPratos.hasNext()) {
        linhaPratos = leitorPratos.nextLine();
        String[] partesPrato = linhaPratos.split(";");

        Prato prato = new Prato();
        prato.setPrato(partesPrato[0]);
        prato.setPreco(Double.parseDouble(partesPrato[1]));
        prato.setCodigo(codigoPrato);

        listaPratos.add(prato);

        codigoPrato++;

    }

And this is the method created to add the object in the list above

File Processing Main.java

public static void criarNovoObjeto(int choice) throws FileNotFoundException {
    Scanner sc = new Scanner(System.in);
    String nomeProduto;
    double preco;
    int codigo;
    codigo = 18;

    System.out.println("Escolha a opção que deseja adicionar: ");
    System.out.println("1. Pratos ");
    System.out.println("2. Bebidas ");
    System.out.println("3. Vinhos ");

    if (choice == 1) {
        System.out.println("Digite o nome do seu prato: ");
        nomeProduto = sc.nextLine();
        sc.nextLine();

        System.out.println("Digite o preço do seu prato: ");
        preco = sc.nextDouble();
        sc.nextLine();

        Prato prato = new Prato();
        prato.setPrato(nomeProduto);
        prato.setPreco(preco);
        prato.setCodigo(codigo);

        //listaPratos.add(prato); // esse .add não funciona pois não encontra a lista
        
        ProcessaListas.lerArquivoPrato(
                "C:\\Users\\igorm\\Documents\\FACULDADE\\2semestre\\Desenvolvimento de Software l\\Atividade4\\pratos.csv");
    }

}

as I would to find the list of the file Processalists.java and add the value in it by creating method()?

1 answer

0


The code you presented from the file Processors seems to be incomplete. Every java file must have at least one class. Also, the while loop code must be inside some method or constructor.

For you to access the variable listings from the class Main processing, listings must be an attribute of the class Processors. Your code is fully procedural, if your code is object oriented, you should create an object of Processors to then be able to access listings.

The code of Processors would look like a structure similar to the following:

public class ProcessaListas {

private List<Prato> listaPratos = new ArrayList<>(); 

public List<Prato> getListaPratos() {
    return listaPratos;
}

public void lerArquivoPrato() {
//aqui seria um método para ler os pratos de um arquivo
//mas o código que você apresentou está incompleto
}
}

And in the method rearNovObject would look something like this:

public static void criarNovoObjeto(int choice) throws FileNotFoundException {
    Scanner sc = new Scanner(System.in);
    String nomeProduto;
    double preco;
    int codigo;
    codigo = 18;

    System.out.println("Escolha a opção que deseja adicionar: ");
    System.out.println("1. Pratos ");
    System.out.println("2. Bebidas ");
    System.out.println("3. Vinhos ");

    if (choice == 1) {
        System.out.println("Digite o nome do seu prato: ");
        nomeProduto = sc.nextLine();
        sc.nextLine();

        System.out.println("Digite o preço do seu prato: ");
        preco = sc.nextDouble();
        sc.nextLine();

        Prato prato = new Prato();
        prato.setPrato(nomeProduto);
        prato.setPreco(preco);
        prato.setCodigo(codigo);
        ProcessaListas processaListas = new ProcessaListas();
        processaListas.getListaPratos.add(prato); 
        processaListas.lerArquivoPrato(
                "C:\\Users\\igorm\\Documents\\FACULDADE\\2semestre\\Desenvolvimento de Software l\\Atividade4\\pratos.csv");
    }

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.