Me ajude em java, Questão e código abaixo

2 respostas
S

Crie uma classe Retangulo. A classe tem atributos comprimento e altura, cada uma dos quais é configurado com o padrão 1. A classe deve ter métodos que calculam o perímetro e a área. A classe tem métodos set e get para o comprimento e a largura. Os métodos set devem verificar se comprimento e altura são, cada um, números de ponto flutuante maiores que 0,0 e menores que 20,0. Escreva um programa para testar a classe Retangulo.
Veja o código abaixo, ta dando erro, pois não aparece o resultado

package Aula;

import java.util.Scanner;

public class Retangulo {

private static float largura;
private static float altura;

public float getLargura() {
	return largura;
}

public boolean setLargura(float largura) {

	if ((largura < 0.0) || (largura > 20.0)) {
		System.out.println("numero invalido");
		return false;
	} else {
		Retangulo.largura = largura;
		return true;
	}
}

public float getAltura() {
	return altura;
}

public boolean setAltura(float altura) {

	if ((altura < 0.0) || (altura > 20.0)) {
		System.out.println("numero invalido");
		return false;
		

	} else {
		Retangulo.altura = altura;
		return true;
	}
}

public float perimetro() {
	float p = 2 * (largura + altura);
	return p;
}

public float area() {
	float a = (largura * altura);
	return a;
}

}

package Aula;

import java.util.Scanner;

public class RetanguloTest {

public static void main(String args[]) {

Retangulo oj = new Retangulo();

Scanner entrada = new Scanner(System.in);

System.out.print(altura:);

float altura = entrada.nextFloat();

System.out.print(largura:);

float largura = entrada.nextFloat();

System.out.print(perimetro : " + oj.perimetro() + " area :

+ oj.area());
}

}

2 Respostas

Jothar_Aleksander

Você está lendo os dados e passando para variáveis locais (declaradas dentro de um método) e instanciadas nele. No entanto, não está modificando os valores das variáveis internas (atributos) da classe Retangulo com os métodos modificadores (os sets). Era esperado algo como isso:

import java.util.Scanner;

public class RetanguloTest {
	public static void main(String args[]) {
		Retangulo oj = new Retangulo();
		Scanner entrada = new Scanner(System.in);
		
		System.out.print(altura:);
		float altura = entrada.nextFloat();
		setAltura(altura);
		
		System.out.print(largura:);
		float largura = entrada.nextFloat();
		setLargura(largura);
		
		System.out.print(perimetro : " + oj.perimetro() + " area :
		+ oj.area());
	}
}

ou mesmo isso:

import java.util.Scanner;

public class RetanguloTest {
	public static void main(String args[]) {
		Retangulo oj = new Retangulo();
		Scanner entrada = new Scanner(System.in);
		
		System.out.print(altura:);
		setAltura(entrada.nextFloat());
		
		System.out.print(largura:);
		setLargura(entrada.nextFloat());
		
		System.out.print(perimetro : " + oj.perimetro() + " area :
		+ oj.area());
	}
}

Os métodos set devem ser escritos de tal forma que defina o valor de um atributo da classe, podendo, sem problema algum fazer validações. Por exemplo:

public void setLargura(float largura) {

	if ((largura < 0.0) || (largura > 20.0)) {
		System.out.println("numero inválido");

	}else{
		this.largura = largura;
	}
}
staroski

Esses dois atributos não devem ser estáticos.

Criado 3 de setembro de 2019
Ultima resposta 3 de set. de 2019
Respostas 2
Participantes 3