Tenho um exercicio que é:
Defina uma classe chamada Zodiaco.
Esta classe deverá conter dois métodos: O método main e um método chamado imprimeSigno.
No método main declare uma variável inteira chamada signo. Atribua à esta variável (através da leitura pelo teclado) o número do signo do zodíaco correspondente à data do seu aniversário, conforme lista abaixo:
10 signo do zodíaco: Aquário (21/jan à 19/fev)
20 signo do zodíaco: Peixes (20/fev à 20/mar)
30 signo do zodíaco: Áries (21/mar à 20/abr)
40 signo do zodíaco: Touro (21/abr à 20/mai)
50 signo do zodíaco: Gêmeos (21/mai à 20/jun)
60 signo do zodíaco: Câncer (21/jun à 21/jul)
70 signo do zodíaco: Leão (22/jul à 22/ago)
80 signo do zodíaco: Virgem (23/ago à 22/set)
90 signo do zodíaco: Libra (23/set à 22/out)
100 signo do zodíaco: Escorpião (23/out à 21/nov)
110 signo do zodíaco: Sagitário (22/nov à 21/dez)
120 signo do zodíaco: Capricórnio (22/dez à 20/jan)
No método main você deverá imprimir: "Você é do seguinte signo do zodíaco: " chamando, em seguida, o método imprimeSigno, que deve imprimir o signo em questão.
O método imprimeSigno deve ser declarado como método da classe e com um parâmetro inteiro. Ao se chamar imprimeSigno deve ser passado para ele o valor numérico armazenado na variável signo de main.
Por exemplo, se você atribuiu o valor 9 à variável signo, a saída do programa deverá ser: “Você é do seguinte signo do zodíaco: Libra”
Acho que estou errando quando fiz o metodo ImprimeSigno, o que estaria errado nele?
[code]import javax.swing.*;
public class Zodiaco {
public static void main(String[] args) {
int signo;
signo=Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro valor: "));
System.out.println("Você é do seguinte signo do zodíaco:"+ImprimeSigno());
}
public void ImprimeSigno(int signo){
switch (signo){
case 1:
System.out.println ("Libra");
break;
case 2:
System.out.println ("leao");
break;
}
}
}[/code]
Nesta caso cara vc tem duas opções.
1 - Voce cria um objeto da propria classe no metodo main.
import javax.swing.*;
public class Zodiaco {
public static void main(String[] args) {
Zodiaco z = new Zodiaco();
int signo=0;
signo=Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro valor: "));
System.out.println("Você é do seguinte signo do zodíaco:"+z.ImprimeSigno(signo));
}
public String ImprimeSigno(int signo){
switch (signo){
case 1:
System.out.println ("Libra");
case 2:
System.out.println ("leao");
}
}
}
2- Ou vc cria o metodo ImprimeSigno statico:
import javax.swing.*;
public class Zodiaco {
public static void main(String[] args) {
int signo;
signo=Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro valor: "));
System.out.println("Você é do seguinte signo do zodíaco:"+ImprimeSigno(signo));
}
public static String ImprimeSigno(int signo){
switch (signo){
case 1:
System.out.println ("Libra");
case 2:
System.out.println ("leao");
}
}
}
Explicação: Pelo metodo main ser static ele só pode acessar metodos statics.
Não esqueça metodos static só podem acessar coisas static. De passar o parametro pro metodo kkkk… E por fim o metodo deve retornar uma string para que vc possa concatenar na frase.
[]'s
Nos 2 casos ele tá dando erro no
System.out.println("Você é do seguinte signo do zodíaco:"+z.ImprimeSigno(signo));
você deve passar uma variável inteira como argumento para o parâmetro de imprime signo, e utilizar um default no swicth, caso nenhum dos “case” testados de certo.
Desculpe esqueci um detalhe:
public String ImprimeSigno(int signo){
String s = "";
String s = "";
switch (signo) {
case 1:
s = "Libra";
break;
case 2:
s = "leao";
break;
default:
s = "";
break;
}
return s;
}
Amigo se você tivesse lido o código teria notado a falta do return no metodo.
Não copie e cole, leia os posts atentamente e aprenda. É bem legal
Não ficaria assim no caso?
[code]import javax.swing.*;
public class Zodiaco {
public static void main(String[] args) {
Zodiaco z = new Zodiaco();
int signo=0;
signo=Integer.parseInt(JOptionPane.showInputDialog("Digite o primeiro valor: "));
System.out.println("Você é do seguinte signo do zodíaco:"+z.ImprimeSigno(int signo));
}
public int ImprimeSigno(int signo){
switch (signo){
case 1:
System.out.println ("Libra");
break;
case 2:
System.out.println ("Libra");
break;
default:
System.out.println ("não");
}
}
}
[/code]
mais da erro também, ele pede pra tira as } dae
hummmm pior que era mesmo, valeu cara!!!
Acho que você poderia excluir esse case se usasse um vetor para armazenar os signos…
Alex por favor, se a duvida foi sanada altere o nome do topico e coloque [RESOLVIDO]…
Vitor acho que isso foi só um exemplo, ninguem identifica os signos por numeros, mas por datas.
[]'s
Só uma pergunta, estou começando em java e nesse exemplo seria o ImprimeSigno um método da classe ou metodo de instância???
Não entendi muito bem a diferença entre os dois, se puder me dar uma ajuda eu agradeço.
Se o metodo é static ele é de classe e nao precisa de uma instancia (objeto) para ser invocado.