Ir ao conteúdo

Posts recomendados

Postado

Bom dia!

 

Sou iniciante e estou desenvolvendo uma calculadora em Java. Porém, meu método quantidade de lados não funciona.

 

Não sei sei estou errando na utilização do Scanner, na construção do método ou outra coisa.

 

Se alguém puder me ajudar a entender

package geometria;

import java.util.Scanner;

public class Principal {

    public static void main(String[] args) {

        int lados = 0;
        int i = 0;

        Scanner teclado = new Scanner(System.in);

        for (i = 0; i < 5; i++) {

            do {

                System.out.println("Digite o número de lados do polígono ou zero para encerrar: ");
                lados = teclado.nextInt();

                if (lados == 3) {
                    Triangulo t = new Triangulo();
                    t.setLados(3);
                    System.out.println("Digite a base: ");
                    t.setBase(teclado.nextDouble());
                    System.out.println("Digite a altura: ");
                    t.setAltura(teclado.nextDouble());
                    t.quantidadeLados();
                } else if (lados == 4) {
                    Retangulo r = new Retangulo();
                    r.setLados(4);
                    System.out.println("Digite o lado 1: ");
                    r.setLado1(teclado.nextDouble());
                    System.out.println("Digite o lado 2 ");
                    r.setLado2(teclado.nextDouble());
                    r.quantidadeLados();

                } else if (lados == 0) {
                    System.out.println("Aplicação encerrada!");
                    System.exit(lados);
                } else {
                    System.out.println("Quantidade de lados inválida!");

                }

            } while (lados != 0);

        }
    }
}

 package geometria;

import java.util.Scanner;

public abstract class Poligono {
    
    private int lados;
    
    public Poligono (int lados) {
        this.lados = lados;
    }
    
    public Poligono (){
        this.lados = 0;
    }

    public int getLados() {
        return lados;
    }

    public void setLados(int lados) {
        this.lados = lados;
    }
    
    public abstract void quantidadeLados();
    
    public abstract double calcularArea(double calcularArea);
    
  
    
} 


package geometria;

import java.util.Scanner;

public class Triangulo extends Poligono {
    
    private double base;
    private double altura;
    private double calcularArea;
    
    public Triangulo (int lados,  double base, double altura){
        super(lados);
        this.base = base;
        this.altura = altura;
        this.calcularArea = calcularArea;
    }
    
    public Triangulo (){
        this.base = 0.0;
        this.altura = 0.0;
        this.calcularArea = 0.0;
    }
    

    public double getBase() {
        return base;
    }

    public void setBase(double base) {
        this.base = base;
    }

    public double getAltura() {
        return altura;
    }

    public void setAltura(double altura) {
        this.altura = altura;
    }

    public double getCalcularArea() {
        return calcularArea;
    }

    public void setCalcularArea(double calcularArea) {
        this.calcularArea = calcularArea;
    }
    
    @Override
    public void quantidadeLados() {
        System.out.println("Forma: triângulo" + "\nQuantidade de lados " + this.getLados() + "\nBase: " + this.getBase() + "\nAltura: " + this.getAltura() + "\nArea: " + this.calcularArea);
    }

    @Override
    public double calcularArea(double calcularArea) {
        this.calcularArea = (this.base*this.altura)/2;
        return this.calcularArea;
    }

   
    
}
                          
package geometria;

import java.util.Scanner;


public class Retangulo extends Poligono {
    
    Scanner teclado = new Scanner(System.in);
    
    private double lado1;
    private double lado2;
    private double calcularArea;
    
    public Retangulo (int lados,  double lado1, double lado2){
        super(lados);
        this.lado1 = lado1;
        this.lado2 = lado2;
        this.calcularArea = calcularArea;
    }
    
    public Retangulo (){
        this.lado1 = 0.0;
        this.lado2 = 0;
        this.calcularArea = 0.0;
    }

    public double getLado1() {
        return lado1;
    }

    public void setLado1(double lado1) {
        this.lado1 = lado1;
    }

    public double getLado2() {
        return lado2;
    }

    public void setLado2(double lado2) {
        this.lado2 = lado2;
    }

   
    
    @Override
    public void quantidadeLados() {
        System.out.println("Forma: retângulo" + "\nQuantidade de lados " + this.getLados() + "\nLado 1: " + this.getLado1() + "\nLado2: " + this.getLado2() + "\nArea: " + this.calcularArea );
    }

    @Override
    public double calcularArea(double calcularArea) {
        this.calcularArea = (this.lado1*this.lado2)/2;
        return this.calcularArea;
    }
    
}

                          

, eu agradeço.

Postado

Alguns problemas no código:

  1. Você sabe que todos os triângulos possuem 3 lados, certo? Pois bem, a classe Triangulo deveria saber isso também, bem como a classe Retangulo. Essa informação não deveria ser recebida pelo construtor uma vez que está implícita na própria essência da forma geométrica. Salvo a classe Poligono, pois ela é genérica e não tem como adivinhar, então ela tem que receber essa informação de alguma forma, que no caso foi via construtor.
  2. O atributo area deveria estar na classe Poligono, pois todos os polígonos possuem essa característica.
  3. Os laços de repetição na classe Principal estavam com uma lógica estranha, então substituí por um simples do-while.
package geometria;

public abstract class Poligono {

    private int lados;
    private double area;


    public Poligono() {
        this(0);
    }

    public Poligono(int lados) {
        this.lados = lados;
        this.area = 0.0;
    }


    public int getLados() {
        return lados;
    }

    public void setLados(int lados) {
        this.lados = lados;
    }

    public double getArea() {
        return area;
    }

    public void setArea(double area) {
        this.area = area;
    }


    public abstract void relatorio();

    public abstract void calcularArea();
}
package geometria;

public class Retangulo extends Poligono {

    private double largura;
    private double altura;


    public Retangulo() {
        this(0.0, 0.0);
    }

    public Retangulo(double largura, double altura) {
        super(4);
        this.largura = largura;
        this.altura = altura;
    }


    public double getLargura() {
        return largura;
    }

    public void setLargura(double largura) {
        this.largura = largura;
    }

    public double getAltura() {
        return altura;
    }

    public void setAltura(double altura) {
        this.altura = altura;
    }


    @Override
    public void relatorio() {
        System.out.println("Forma: retângulo \n" +
                "Quantidade de lados: " + super.getLados() + "\n" +
                "Largura: " + this.getLargura() + "\n" +
                " Altura: " + this.getAltura() + "\n" +
                "   Area: " + super.getArea());
    }

    @Override
    public void calcularArea() {
        super.setArea(largura * altura);
    }
}
package geometria;

public class Triangulo extends Poligono {

    private double base;
    private double altura;


    public Triangulo() {
        this(0.0, 0.0);
    }

    public Triangulo(double base, double altura) {
        super(3);
        this.base = base;
        this.altura = altura;
    }


    public double getBase() {
        return base;
    }

    public void setBase(double base) {
        this.base = base;
    }

    public double getAltura() {
        return altura;
    }

    public void setAltura(double altura) {
        this.altura = altura;
    }


    @Override
    public void relatorio() {
        System.out.println("Forma: triângulo \n" +
                "Quantidade de lados " + super.getLados() + "\n" +
                "  Base: " + this.getBase() + "\n" +
                "Altura: " + this.getAltura() + "\n" +
                "  Area: " + super.getArea());
    }

    @Override
    public void calcularArea() {
        super.setArea(base * altura / 2);
    }
}
package geometria;

import java.util.Scanner;

public class Principal {

    public static void main(String[] args) {
        Scanner teclado = new Scanner(System.in);
        int lados;

        do {
            System.out.print("Digite o número de lados do polígono ou zero para encerrar: ");
            lados = teclado.nextInt();
            teclado.nextLine();

            if (lados == 0) {
                System.out.println("Aplicação encerrada!");
            } else if (lados == 3) {
                Triangulo t = new Triangulo();
                System.out.print("  Digite a base: ");
                t.setBase(teclado.nextDouble());
                System.out.print("Digite a altura: ");
                t.setAltura(teclado.nextDouble());
                t.calcularArea();
                t.relatorio();
            } else if (lados == 4) {
                Retangulo r = new Retangulo();
                System.out.print("Digite a largura: ");
                r.setLargura(teclado.nextDouble());
                System.out.print(" Digite a altura: ");
                r.setAltura(teclado.nextDouble());
                r.calcularArea();
                r.relatorio();
            } else {
                System.out.println("Quantidade de lados inválida!");
            }
        } while (lados != 0);

        System.exit(0);
    }
}

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...