Sua classe raio1 NÃO possui nenhum construtor sem PARÂMETROS.
Note que você criou apenas construtores que recebam um PARÂMETRO.
Eder_Peixoto
Obs.: NÃO é permitido criar duas classes (classe Raio e raio1) dentro de um mesmo arquivo.
sgtbreitner
[quote=furutani]Sim falta o construtor default
é só adcionar
publicraio1(){}
hummm deu certo hehe! vlw! jaja coloco outra dúvida sobre este programa!
sgtbreitner
saquei, não sabia disso, mas e como que funciona uma subclasse??? Achei que uma subclasse era várias classes dentro do mesmo arquivo!!
B
Bruno_Laturner
É permitido sim.
O que não pode ter é duas classes public dentro de um mesmo arquivo E você tentar executar a classe que não tem o mesmo nome que o arquivo.
sgtbreitner
Saquei então!
Mas pq quando eu coloco este método ele diz que o retorno é vazio?
class raio1{
double r;
public raio1 (int x){r = x;}
public raio1 (double x){r = x;}
public raio1 (byte x){r = x;}
public raio1 (long x){r = x;}
public raio1 (){ return (double) 2*Math.PI*r;} // metodo type is void
public void raio1 (){}
quero colocar os métodos para calcular o perimetro da circunferencia dentro desta classe, mas ele diz que está void… pq?
arrumei tava aki:
publicdoubleraio1(){return(double)2*Math.PI*r;}// agora deu certo!
sgtbreitner
Pessoal, como que eu faço para o usuário entrar com o valor do raio e empregar este valor nos métodos?? eu devo usar a classe Scanner??
packageraio;publicclassRaio{publicstaticvoidmain(String[]args){raio1redondo=newraio1();System.out.printf("informe o raio: ");}}classraio1{doubler;publicraio1(intx){r=x;}publicraio1(doublex){r=x;}publicraio1(bytex){r=x;}publicraio1(longx){r=x;}publicraio1(floatx){r=x;}publicdoubleperimetro(){return(double)2*Math.PI*r;}// metodo type is voidpublicdoubleAreaCirculo(){return(double)Math.PI*r*r;}publicdoubleVolumeEsfera(){return(double)(4*Math.PI*r*r*r)/3;}publicraio1(){}}
sgtbreitner
fiz assim mas está com erro, ele inicia com 0
publicstaticvoidmain(String[]args){raio1redondo=newraio1();System.out.println("informe o raio: "+redondo.r);System.out.println("Valor do perímetro: \n"+redondo.perimetro()+"valor da área: \n"+redondo.AreaCirculo()+"valor do volume da esfera: "+redondo.VolumeEsfera());}}classraio1{doubler;publicraio1(intx){r=x;}publicraio1(doublex){r=x;}publicraio1(bytex){r=x;}publicraio1(longx){r=x;}publicraio1(floatx){r=x;}publicdoubleperimetro(){return(double)2*Math.PI*r;}// metodo type is voidpublicdoubleAreaCirculo(){return(double)Math.PI*r*r;}publicdoubleVolumeEsfera(){return(double)(4*Math.PI*r*r*r)/3;}publicraio1(){}}
sgtbreitner
então pessoal o problema é este aki:
"Construa uma subclasse que receba um valor raio, que pode ser passado por byte, int, long, float, double. crie metodos distintos p/ retornar em double o perimetro da circunferencia, a area do circulo e o volume da esfera…
Eder_Peixoto
É permitido sim.
O que não pode ter é duas classes public dentro de um mesmo arquivo E você tentar executar a classe que não tem o mesmo nome que o arquivo.
Confirmando o que o Bruno informou, acrescenta-se:
“vc poderá colocar todas as classes em um unico arquivo, contanto q tenha
apenas uma (ou nenhuma) classe publica, e que essa classe(publica) tenha o
mesmo nome do Arquivo!”
importjava.util.Scanner;classTest{publicstaticvoidmain(String[]args){System.out.println("Informe o raio:");Scannerscanner=newScanner(System.in);Raioraio=newRaio(Double.parseDouble(scanner.next()));// aqui pode ocorrer uma exceção se o valor digitado não for numérico ou tiver virgula no lugar do ponto flutuante.System.out.println("Valor do perímetro: "+raio.getPerimetro());System.out.println("valor da área: "+raio.getAreaCirculo());System.out.println("valor do volume da esfera: "+raio.getVolumeEsfera());}}classRaio{privatedoubleraio;publicRaio(){}publicRaio(doubleraio){this.raio=raio;}publicdoublegetRaio(){returnraio;}publicdoublegetPerimetro(){return(double)2*Math.PI*raio;}publicdoublegetAreaCirculo(){return(double)Math.PI*raio*raio;}publicdoublegetVolumeEsfera(){return(double)(4*Math.PI*raio*raio*raio)/3;}}
B
Bruno_Laturner
Notei que o problema envolve subclasses.
Quando falamos de subclasses, normalmente isso está ligado ao conceito de herança, a subclasse sendo a filha da superclasse. No teu caso acho que teria uma superclasse FormaRadial, e subclasses Circulo e Esfera. Pergunte p/ o professor.
Uma classe dentro de outra o nome dado é classe interna.
adriano_si
Só mais uma dica de convenção… Use Iniciais Maiúsculas para nomes de Classes…
No mais… vc está quase lá… O que vc precisa ???
1 - Receber a entrada do usuário;
2 - Enviar essa entrada para o construtor do Raio1;
3 - Calcular os valores do que vc quer de fato e exibir na tela;