@Luiz_Pereira_de_Alme escreveu:
tenho essas orientações :
1)
Enriqueça o seu trabalho implementando
tratamento de exceção, em especial, para tipos incompatíveis, acesso a posição
inexistente de arranjo e divisão por zero.Não esqueça de ampliar o grau de robustez de seu sistema
implementando estratégias de tratamento de exceção para duas situações: acesso
aos arranjos e leitura de tipo inválido.import java.util.*; abstract class FigGeo{ abstract public double perimetro();} class Circulo extends FigGeo{ private double r; public static int cont=0; public double getRaioC(){ return this.r;} public void setRaioC(double r){ this.r=r;} Circulo(){ this.setRaioC(0);} Circulo(double r){ this.setRaioC(r);} public void setRaios(double r){ this.r = r; } public static int contT=0; public void escreveR(){ System.out.println("\nRaio: " + this.getRaioC());} public void leladosR(){ Scanner s=new Scanner(System.in); System.out.print("Digite o valor do Raio dos circulo: "); System.out.print("\nRaio: "); double setRaioC = (s.nextDouble()); this.setRaios(setRaioC); cont++;} public double perimetro(){ return (2*Math.PI*this.getRaioC());} public void escrevePR(){ System.out.println("Perimetro: " + this.perimetro() );} } class Triangulo extends FigGeo{ private double a; private double b; private double c; public double getLadoA(){ return this.a; } public double getLadoB(){ return this.b;} public double getLadoC(){ return this.c;} public void setLadoA(double a){ this.a = a; } public void setLadoB(double b){ this.b = b; } public void setLadoC(double c){ this.c = c; } Triangulo(){ this.setLadoA(0); this.setLadoB(0); this.setLadoC(0); } Triangulo(double a, double b, double c){ this.setLadoA(a); this.setLadoB(b); this.setLadoC(c); } public static int contT=0; public void setLados(double a,double b,double c){ this.a = a; this.b = b; this.c = c;} public void escreve(){ System.out.println("\nLados: " + this.getLadoA() + ", " + this.getLadoB() + ", " + this.getLadoC() ); } public void escreveP(){ System.out.println("Perimetro: " + this.perimetro() );} public int Tipo(){ if(ehTriangulo()== true){ if(this.getLadoA()==this.getLadoB() && this.getLadoB()==this.getLadoC()){ return 1;} else if(this.getLadoA()!=this.getLadoB() && this.getLadoB()!=this.getLadoC() && this.getLadoA()!=this.getLadoC()){ return 3;} else { return 2;} }else { return 0;} } public void escreveTipo(){ int x = Tipo(); if(x == 1){ System.out.println("Equilatero"); } if(x == 2){ System.out.println("Isoscele"); } if(x == 3){ System.out.println("Escaleno"); } if(x == 0){ System.out.println("Nao e triangulo"); } } public boolean ehTriangulo(){ if(this.getLadoA()< this.getLadoB() + this.getLadoC() || this.getLadoB() < this.getLadoA() + this.getLadoC() || this.getLadoC()< this.getLadoA() + this.getLadoB()){ return true; } else{ return false; } } public double perimetro(){ return this.getLadoA()+this.getLadoB()+this.getLadoC();} public void lelados(){ Scanner s=new Scanner(System.in); System.out.print("Digite o valor dos lados do triangulo: "); System.out.print("\nLado A: "); double setLadoA = (s.nextDouble()); System.out.print("Lado B: "); double setLadoB = (s.nextDouble()); System.out.print("Lado C: "); double setLadoC = (s.nextDouble()); this.setLados(setLadoA,setLadoB,setLadoC); contT++; } public static double maiorPerimetro(int i, Triangulo[] m){ if(i <= 1) return 0; if(m[i-1].perimetro() > maiorPerimetro(i-1, m)){ return m[i-1].perimetro(); } return maiorPerimetro(i-1, m); } public static void escreveTriangulosMaiores(int i, double maior, Triangulo[] m){ if(i <= 0) return; if(m[i-1].perimetro() == maior) System.out.println("Posicao: " + (i)); escreveTriangulosMaiores(i - 1, maior, m); } } public class TP1{ public static void main(String[] args){ Scanner s=new Scanner(System.in); Circulo[]o=new Circulo[100]; Triangulo[]t= new Triangulo[100]; int menu,escolha,menuC; int c=0; int a=0; do{ System.out.print("Digite uma opcao do menu a seguir\n"+ "1. Menu dos circulos.\n "+ "2. Menu dos triangulos.\n :"+ "0.Sair: \n"); escolha =s.nextInt(); if(escolha==1){ do{ System.out.print("Digite uma opcao do menu a seguir\n"+ "1. Ler um novo circulo.\n"+ "2. Listar todos os circulos criados.\n"+ "3. Escrever o circulo posicionado na posicao k do arranjo, sendo k um valor lido.\n" + "4. Verificar o perimetro de um circulo armazenado na posicao k do arranjo.\n"+ "0.Sair: \n"); menuC =s.nextInt(); switch( menuC ) { case 1: o[a] = new Circulo(); o[a].leladosR(); a++; break; case 2: System.out.println("Circulos do arranjo: "); for(int i = 0; i < Circulo.cont; i++){ o[i].escreveR(); o[i].escrevePR(); } System.out.print("\n"); break; case 3: int v; System.out.print("Digite a posicao do circulo que deseja: "); v = s.nextInt(); o[v].escreveR(); o[v].escrevePR(); break; case 4: int z; System.out.println("Digite a posicao: "); z=s.nextInt(); o[z].escreveR(); o[z].escrevePR(); break; case 0: System.out.println("Acabou o programa!"); break; default: System.out.println("Valor errado."); } }while(menuC!=0); } else if(escolha==2){ do{ System.out.print("Digite uma opcao do menu a seguir\n"+ "1. Ler um novo triangulo.\n"+ "2. Listar todos os triangulos criados.\n"+ "3. Escrever o triangulo posicionado na posicao k do arranjo, sendo k um valor lido.\n" + "4. Verificar o tipo de um triangulo armazenado na posicao k do arranjo.\n" + "5. Verificar o perimetro de um triangulo armazenado na posicao k do arranjo.\n" + "6. Listar todos os triangulos do arranjo, seguido de seu perimetro e de seu tipo.\n" + "7. Listar todos os triangulos cujos valores dos lados precisam ser corrigidos por não atender à sua condicação de existeência.\n"+ "8. Triangulos com maior períimetro. \n"+ "0.Sair: \n"); menu =s.nextInt(); switch( menu ) { case 1: t[c] = new Triangulo(); t[c].lelados(); c++; break; case 2: System.out.println("Triangulos do arranjo: "); for(int i = 0; i < Triangulo.contT; i++){ t[i].escreveTipo(); t[i].escreveP(); t[i].escreve();} System.out.print("\n"); break; case 3: int q; System.out.print("Digite a posicao do triangulo que deseja: "); q = s.nextInt(); t[q].escreve(); break; case 4: int j; System.out.print("Digite qual triangulo deseja verificar o tipo: "); j = s.nextInt(); t[j].ehTriangulo(); if(t[j].ehTriangulo() == true){ t[j].Tipo(); t[j].escreveTipo(); } break; case 5: int y; System.out.println("Digite a posicao: "); y=s.nextInt(); t[y].escreveP(); break; case 6: System.out.println("Triangulos do arranjo: "); for(int i = 0; i < Triangulo.contT;i++){ t[i].escreve(); t[i].escreveP(); t[i].escreveTipo(); } break; case 7: for(int i =0;i < c;i++){ if(t[i].ehTriangulo() == false){ t[i].lelados(); } else{ System.out.println("Nao tem triangulos a serem corrigidos"); } } break; case 8: double maior = Triangulo.maiorPerimetro(c,t); Triangulo.escreveTriangulosMaiores(c,maior,t); System.out.println(maior); break; case 0: System.out.println("Acabou o programa!"); break; default: System.out.println("Valor errado."); } }while(menu!=0); }else if(escolha!=0){ System.out.println("Digite novamente 1 ou 2!!\n");} }while(escolha!=0); } }
Mensagens: 3
Participantes: 3