Informática, perguntado por peyuji, 5 meses atrás

Alguém sabe como fazer isso? meu código fala que está com problema.


desenvolver um sistema em java para realizar o controle (cadastro e busca em um vetor) de animais de uma fazenda. O sistema deverá apresentar para o usuário o seguinte menu de opções: 1. Cadastrar 2. Relatório 3. Pesquisa Ao escolher a opção de cadastro, um submenu deverá ser apresentado: 1. Bovino 2. Suíno 3. Caprino O usuário da aplicação deverá escolher uma opção válida e, em seguida, entrar com as informações do animal: raça, peso, idade. Além das informações citadas, para cada animal, deverá ser gerado um código único composto por cinco letras maiúsculas obedecendo a seguinte regra: a. Bovino --> BO + 3 letras maiúsculas b. Suíno --> SU + 3 letras maiúsculas c. Caprino --> CA + 3 letras maiúsculas Os dados de cada animal deverão ser armazenados em arrays e o código de cada animal deverá ser armazenado de forma criptografada usando a cifra de César (descrição a seguir). Para a criptografia o usuário da aplicação deverá informar qual o número de cifras para deslocamento. A opção Relatório do menu principal deverá exibir no vídeo todos os dados de cada animal, o código criptografado e o código descriptografado. A opção Pesquisa do menu principal deverá receber o código criptografado e deverá pesquisar no vetor se o animal com o código está registrado. Caso o animal esteja registrado no vetor, seus dados deverão ser exibidos no vídeo. Se não estiver cadastrado, uma mensagem deverá ser exibida para o usuário da aplicação.


código:

package GSEvelyn;
import java.util.Scanner;

public class GSLabProg {

static Scanner s = new Scanner(System.in);

static String[] alfabeto = new String[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O",

"P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "A", "B", "C" };

static int crypt[] = new int[3];

static int qtdAnimais = 0;


public static void main(String[] args) {


int opcao = 0;


do {


System.out.println("--- Controle de Animais da Fazenda ---\n");


System.out.println("--- Opções ---");

System.out.println("0 - Sair");

System.out.println("1 - Cadastro");

System.out.println("2 - Relatório");

System.out.println("3 - Pesquisa");

System.out.println("--------------");

System.out.print("\nEscolha uma opção: ");

opcao = s.nextInt();

// validação da opção

while (opcao < 0 || opcao > 3) {

System.out.print("Opção inválida, por favor digite um número válido: ");

opcao = s.nextInt();

}

if (opcao == 0) {

System.out.println("\nFIM DO PROGRAMA");

} else if (opcao == 1) {

System.out.println("\n--- CADASTRO ---");

System.out.print("\nDigite a quantidade de animais que deseja cadastrar: ");

qtdAnimais = s.nextInt();

System.out.println(qtdAnimais);

cadastro();

} else if (opcao == 2) {

relatorio();

} else {

pesquisa();

}


} while (opcao != 0);


}// main


private static void relatorio() {

// TODO Auto-generated method stub


}


static String cod[] = new String[qtdAnimais], codCript[] = new String[qtdAnimais], raca[] = new String[qtdAnimais];

static int peso[] = new int[qtdAnimais], idade[] = new int[qtdAnimais];


public static void cadastro() {

int subopcao = 0;

System.out.println(qtdAnimais);

System.out.println(cod.length);

for (int i = 0; i < qtdAnimais; i++) {


System.out.println("\n--- Raça do animal " + (i + 1) + "º animal ---");

System.out.println("1 - Bovino");

System.out.println("2 - Suíno");

System.out.println("3 - Caprino");

System.out.print("Escolha uma opção: ");

subopcao = s.nextInt();

// validação do submenu

while (subopcao < 1 || subopcao > 3) {

System.out.print("Opção inválida, por favor digite um número válido: ");

subopcao = s.nextInt();

}


System.out.print("Digite o peso do animal: ");

peso[i] = s.nextInt();


System.out.print("Digite a idade do animal: ");

idade[i] = s.nextInt();


// geração do código

String codigo = geraCodigo(subopcao);

cod[i] = codigo;


// criptografia do código

String codigoCript = encriptaCodigo(subopcao, codigo);

codCript[i] = codigoCript;


}


}


private static String encriptaCodigo(int subopcao, String codigo) {

// TODO Auto-generated method stub

return null;

}


public static String geraCodigo(int subopcao) {


String codigo = "";

int indLetra = 0;


switch (subopcao) {



case 3:


codigo = "CA";


for (int i = 0; i < 3; i++) {

indLetra = (int) (Math.random() * 26);

codigo += alfabeto[indLetra];

crypt[i] = indLetra + 3;

}


System.out.println(codigo);

break;

}




System.out.println("--Caprino--");

System.out.println("");

System.out.println("Raça");


System.out.println("Peso");


System.out.println("Idade");

return codigo;



}


public static void pesquisa() {


}


}

ao tentar executar aparece isso

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 0 out
of bounds for length 0
at GSEvelyn.GSLabProg.cadastro(GSLabProg.java:99)
at GSEvelyn.GSLabProg.main(GSLabProg.java:61)

Soluções para a tarefa

Respondido por deboragoncalves9461
0

Resposta:

opa boa noite!

o trecho "while (opcao != 0);" não informa oque acontece quando a opção for diferente de 0. ele só informa que entrará em loop, mas não específica. da uma verificada. Sugestão: coloca o print do código na IDE c/ o print informando a linha do erro


peyuji: como faço para inserir o print?
peyuji: eu inseri o print em outro posto pois não consegui editar esse
Perguntas interessantes