Estou com problemas para imprimir os dados de uma Array
[Aplicação: O usuário vai pra tela de MENU, seleciona a opção de cadastro(“cadastrarDesenhoAnimado”)
… Cadastra… (criasse uma Array “desenhosAnimados” com os dados) e retorna ao MENU, quando seleciona a opção de exibir os dados cadastrados (“imprimirLista”) tenho o seguinte erro:
“Exception in thread “main” java.lang.RuntimeException: Uncompilable source code - Erroneous tree type:
at Principal.imprimirLista(Principal.java:261)”
import java.util.Scanner;
public class Principal {
Scanner scanner = new Scanner(System.in);
Scanner ler = new Scanner(System.in);
// Estrutura de dados que armazenará os dados dos filmes ...
private static String[][] desenhosAnimados;
// Indices dos campos dos desenhos ...
private static final int CODIGO = 0;
private static final int ID = 1;
private static final int NOME = 2;
private static final int CLASSIFICACAO = 3;
private static final int ANO = 4;
private static final int TEMPO = 5;
private static final int QTD_ESTOQUE = 6;
private static final int VALOR = 7;
// String do menu ...
private static final String MENU = "Projeto Interdisciplinar \n"
+ "Tema:Desenhos Animados \n \n"
+ "Selecione a opção desejada:\n"
+ "[1] --> Cadastrar Desenhos. \n"
+ "[2] --> Alterar dados de um desenho cadastrado. \n"
+ "[3] --> Exibir desenhos de determinada faixa etária. \n"
+ "[4] --> Exibir desenho mais antigo de uma faixa etária \n"
+ "[5] --> Exibir valor em DVD no estoque de um determinado desenho. \n"
+ "[6] --> Exibir tempo médio de duração de todos os desenhos cadastrados. \n"
+ "[7] --> Listar todos desenhos cadastrados \n"
+ "[8] --> Créditos \n"
+ "[9] --> Sair \n"
+"_________________________________________________________________________\n \n";
private static void cadastrarDesenhoAnimado() {
Scanner ler = new Scanner(System.in);
String id;
String nome;
String classificacao;
String ano;
String duracao;
String qtd;
String valor;
System.out.println("Quantos desenhos você irá cadastrar ?");
int n1 = ler.nextInt();
desenhosAnimados = new String[n1][8];
for (int i = 0; i < desenhosAnimados.length; i++) {
System.out.println("Cadastro Desenho nº " + (i + 1));
System.out.println("Informe o nome do desenho:");
nome = ler.next();
System.out.println("Informe o código(ID) do desenho:");
id = ler.next();
System.out.println("Informe idade minima recomendada (classificação):");
classificacao = ler.next();
System.out.println("Informe o ano de lançamento do desenho: ");
ano = ler.next();
System.out.println("Informe quantos minutos tem de duração o desenho:");
duracao = ler.next();
System.out.println("Informe a quantidade de DVD(s) que há em estoque deste desenho:");
qtd = ler.next();
System.out.println("Informe o valor de cada DVD(s) deste desenho:");
valor = ler.next();
desenhosAnimados[i][CODIGO] = "" + (i + 1);
desenhosAnimados[i][ID] = id;
desenhosAnimados[i][NOME] = nome;
desenhosAnimados[i][CLASSIFICACAO] = classificacao;
desenhosAnimados[i][ANO] = ano;
desenhosAnimados[i][TEMPO] = duracao;
desenhosAnimados[i][QTD_ESTOQUE] = qtd;
desenhosAnimados[i][VALOR] = valor;
}
System.out.println("Todos os Desenhos foram cadastrados com sucesso !");
}
private static void alterarDesenhosAnimados() {
Scanner ler = new Scanner(System.in);
System.out.println("Informe a ID do desenho que deseja alterar os dados:");
String idPesquisa = ler.next();
for (int i = 0; i < desenhosAnimados.length; i++) {
if (desenhosAnimados[i][ID].equals(idPesquisa)) {
String codigo = desenhosAnimados[i][ID];
System.out.println("Informe o novo nome do desenho de ID [" + codigo + "]:");
String nome = ler.next();
System.out.println("informe a nova classificação:");
String classificacao = ler.next();
System.out.println("informe o ano de lançamento do desenho:");
String ano = ler.next();
System.out.println("informe o tempo de duração do desenho (em minutos):");
String duracao = ler.next();
System.out.println("informe quantos DVD's do desenho há no estoque:");
String qtd = ler.next();
System.out.println("informe o valor de cada DVD's do desenho:");
String valor = ler.next();
desenhosAnimados[i][NOME] = nome;
desenhosAnimados[i][CLASSIFICACAO] = classificacao;
desenhosAnimados[i][ANO] = ano;
desenhosAnimados[i][TEMPO] = duracao;
desenhosAnimados[i][QTD_ESTOQUE] = qtd;
desenhosAnimados[i][VALOR] = valor;
} else {
System.out.println("Nenhum registro encontrado com o ID informado, tente novamente.");
System.out.println("___________________________________________________________\n"
+ "Selecio a opção desejada:\n"
+ "[1] Tentar Novamente \n"
+ "[0] Voltar ao Menu \n"
+ "___________________________________________________________");
int opcao = ler.nextInt();
if (opcao == 1) {
alterarDesenhosAnimados();
} else {
menu();
}
}
}
}
private static void creditos() {
Scanner ler = new Scanner(System.in);
System.out.println("___________________________________________________________\n"
+ "Projeto Interdisciplinar \n"
+ "Tema:Desenhos Animados \n \n"
+ "Lindomar Jose da Silva R.A: 1912126-1\n"
+ "Luiz Baitola \n"
+ "___________________________________________________________");
System.out.println("\n"
+ "Selecio a opção desejada:\n"
+ "[1] Voltar ao Menu \n"
+ "[0] Encerrar \n");
int opcao = ler.nextInt();
if (opcao == 1) {
menu();
} else {
System.out.println("Obrigado!!");
System.exit(0);
}
}
private static void menu() {
Scanner ler = new Scanner(System.in);
System.out.println("Projeto Interdisciplinar \n \n");
System.out.println("Tema: Desenho \n ");
System.out.println(MENU);
int opcao = ler.nextInt();
switch (opcao) {
case 1:
cadastrarDesenhoAnimado();
System.out.println("___________________________________________________________\n"
+ "Selecio a opção desejada:\n"
+ "[1] Voltar ao Menu \n"
+ "[0] Encerrar \n");
opcao = ler.nextInt();
if (opcao == 1) {
menu();
} else {
break;
}
case 2:
alterarDesenhosAnimados();
System.out.println("___________________________________________________________\n"
+ "Selecio a opção desejada:\n"
+ "[1] Voltar ao Menu \n"
+ "[0] Encerrar \n");
opcao = ler.nextInt();
if (opcao == 1) {
menu();
} else {
break;
}
case 3:
//Exibir desenhos de determinada faixa etária.
System.out.println("___________________________________________________________\n"
+ "Selecio a opção desejada:\n"
+ "[1] Voltar ao Menu \n"
+ "[0] Encerrar \n");
opcao = ler.nextInt();
if (opcao == 1) {
menu();
} else {
break;
}
case 4:
//Exibir desenho mais antigo de uma faixa etária
System.out.println("___________________________________________________________\n"
+ "Selecio a opção desejada:\n"
+ "[1] Voltar ao Menu \n"
+ "[0] Encerrar \n");
opcao = ler.nextInt();
if (opcao == 1) {
menu();
} else {
break;
}
case 5:
//Exibir valor em DVD no estoque de um determinado desenho.
System.out.println("___________________________________________________________\n"
+ "Selecio a opção desejada:\n"
+ "[1] Voltar ao Menu \n"
+ "[0] Encerrar \n");
opcao = ler.nextInt();
if (opcao == 1) {
menu();
} else {
break;
}
case 6:
//Exibir tempo médio de duração de todos os desenhos cadastrados.
System.out.println("___________________________________________________________\n"
+ "Selecio a opção desejada:\n"
+ "[1] Voltar ao Menu \n"
+ "[0] Encerrar \n");
opcao = ler.nextInt();
if (opcao == 1) {
menu();
} else {
break;
}
case 7:
imprimirLista();
System.out.println("___________________________________________________________\n"
+ "Selecio a opção desejada:\n"
+ "[1] Voltar ao Menu \n"
+ "[0] Encerrar \n");
opcao = ler.nextInt();
if (opcao == 1) {
menu();
} else {
break;
}
case 8:
creditos();
System.out.println("___________________________________________________________\n"
+ "Selecio a opção desejada:\n"
+ "[1] Voltar ao Menu \n"
+ "[0] Encerrar \n");
opcao = ler.nextInt();
if (opcao == 1) {
menu();
} else {
break;
}
case 9:
break;
default:
break;
}
}
O problema está nesta parte:
private static void imprimirLista() {
Scanner ler = new Scanner(System.in);
for (int i = 0; i < desenhosAnimados.length; i++) {
System.out.println("Desenho " + (1 + i) + ": \n"
+ "Nome: " + NOME[i] + ".\n"
+ "ID: " + ID[i] + ".\n"
+ "Classificação: " + CLASSIFICACAO[i] + " anos.\n"
+ "Lançameto: " + ANO[i] + ".\n"
+ "Duração: " + TEMPO[i] + " minutos.\n"
+ "Em estoque: " + QTD_ESTOQUE[i] + " unidades.\n"
+ "Valor unitário: R$" + VALOR[i] + " \n"
+ "________________________________________________");
}
}
public static void main(String[] args) {
menu();
}
}
Dei uma pesquisada aqui mas por ser muito cru em java não consegui achar algo que ajudasse, tirei como base um trabalho igual http://www.guj.com.br/t/array-cadastro/88881 de anos atrás porém é o mesmo trabalho, mas como o professor que estou não passou muita coisa estou usando apenas o que foi ensinado em aula…
Se alguém puder dar uma LUZ pois com essa função consigo dar continuidade e acredito finalizar a aplicação. E se puder avaliar também, criticas são bem vindas pois estou iniciando em java.
Vlw !!