São três as classes:
PRINCIPAL:
`package Compras;
import java.util.Scanner;
public class Principal {
public static void main (String[] args){
Produto[] lista = new Produto[50];
Scanner ler=new Scanner (System.in);
int opcao, ultimoProduto=0;
do{
//Exibição do menu
System.out.println ("1- Adicionar produto \n2- Atualizar produto");
System.out.println ("3- Remover produto \n4- Ver carrinho \n5- Sair");
opcao=ler.nextInt();
//Execução da opção escolhida
switch (opcao){
//Chama método para adicionar produto ao carrinho
case 1:
Carrinho.adicionarProduto (ultimoProduto++);
ultimoProduto++;
break;
//Chama o método para editar algum produto no carrinho
case 2:
Carrinho.atualizarProduto (ultimoProduto);
break;
}
}while(opcao!=5);
}
}`
PRODUTO:
package Compras;
public class Produto {
String nome= new String();
double preco;
public Produto(String nome, double preco){
this.nome=nome;
this.preco=preco;
}
}
CARRINHO:
package Compras;
import java.util.Scanner;
public class Carrinho {
static Produto[] lista= new Produto[50];
static Scanner ler=new Scanner(System.in);
//método recebe a posição do último produto adicionado
static void adicionarProduto(int ultimoProduto) {
//Ler nome e preço do produto a ser adicionado
System.out.println ("Nome: ");
String nome=ler.nextLine();
System.out.println ("Preço: ");
double preco=Double.parseDouble(ler.nextLine());
Produto produto = new Produto (nome, preco);
lista[ultimoProduto]=produto;
System.out.println (lista[ultimoProduto].nome+" foi adicionado ao carrinho.");
}
//método para editar produtos adicionados
static void atualizarProduto(int ultimoProduto){
//laço para exibir os produtos contidos no carrinho
for (int x=1; x<=ultimoProduto; x++){
System.out.println (x+"- "+lista[x].nome+" "+lista[x].preco);
}
}
}
Ao executar o projeto, adiciono um produto qualquer sem problemas, mas depois, quando retorna o menu e escolho a opção 2, para editar algum produto, que começa por exibir o produtos já adicionados, então erros são acusados na linha 21 da classe “Carrinho”, um println que, curiosamente, foi usado normalmente no primeiro método que falei que roda sem problemas; e na linha 22 da classe Principal, onde é chamado esse método “atualizarProduto”.