Me ajudem trabalho da faculdade sobre ano bisexto

8 respostas
IsaelCoelho

gente é o seguinte tenho um trabalho para amanhã e uma parte deste trabalho é mostra um laço onde imprimi na tela se o ano é bisexto ou não eu fiz duas classes mais ta dando erro e gostaria de saber onde está o erro por favor me ajudem nisso.

public class anobisexto {
	protected float Ano;

	public void setAno(float pAno) {
		float Ano = pAno;

	}

	public float getAno() {

		return Ano;
	}

	public void laco() {
		if (Ano % 4 == 0 & Ano % 100 != 0) {
			System.out.print("O Ano Digitado é Bisexto");
		} else {
			System.out.println("O Ano Digitado não é Bisexto");
		}

	}
}

esse agora é a classe test

public class testmodulos {

	public static void main(String[] args) {
		anobisexto ano = new anobisexto();
		ano.laco();
		ano.setAno(2012);
		
		
	}

}

8 Respostas

henriqueluz

Cola a StackTrace, assim fica dificil.

De cara corrija seu if:

if ((Ano % 4 == 0) && (Ano % 100 != 0))

Abs,

fabin

Meu caro

tente trocar os nomes das suas classes por

anobisexto para AnoBiSexto
testmodulos para TestModulos

acho q resolveria seu problema

vinilima

Seu métodos estavam em ordem errada, faça isso:

public static void main(String[] args) { anobisexto ano = new anobisexto(); ano.setAno(2012); ano.laco(); } :smiley:

tiagobernardo32

vinilima:
Seu métodos estavam em ordem errada, faça isso:

public static void main(String[] args) { anobisexto ano = new anobisexto(); ano.setAno(2012); ano.laco(); } :smiley:

Além disso que o vinilima mencionou, faça:

public class anobisexto {  
		     protected float Ano;  
		       public void setAno(float pAno) {  
		           this.Ano = pAno;  //E não flat Ano = pAno  
		     
		       }

Até +

IsaelCoelho

Gente ja fiz como vocês me dissseram mais continua dando erro o programa só diz que o ano não é bisexto mesmo quando o ano é bisexto
será que não ha um erro no meu laço if

leoramos

De novo: posta o stackTrace, a mensagem de erro.
Arrumou o comparador, como te indicaram?
Abraço!

henriqueluz

public static boolean isAnoBissexto(int ano){ if((ano%4 == 0) && (ano%100 != 0)){ return true; } return false; }

public static void main(String[] args) {
//Imprime true
		System.out.println(isAnoBissexto(1980));
//Imprime false
                System.out.println(isAnoBissexto(2004));
	}
Lucas_Abbatepaolo

Vamos as sugestoes:

public class testmodulos {  
     
        public static void main(String[] args) {  
            anobisexto ano = new anobisexto();  
            ano.laco(); //vc primeiro esta mandando executar o metodo laco  e depois passa o valor para o ano
                             //isso ja causaria um problema pois vc esta usando a variavel vazia.  

            ano.setAno(2012);  //isso deve vir antes da chamada do metodo laco()
              
              
        }  
  
  }

Antes que digam que deveria estar dando erro, por sua variavel estar sendo utilizada antes de ser iniciada vou explicar.
Variaveis de instancia que são primitivas quando iniciadas recebem um valor padrão (no seu caso um float está recebendo 0);

public class anobisexto {  
     protected float Ano;  //esta variavel quando vc instancia sua classe recebe o valor 0
   
    //este metodo esta errado no contexto de um setter
    //vc esta criando uma variavel de bloco aqui dentro sendo assim ela morre junto com o final da execução do metodo e vc nunca
    //atribuiu valor a sua variavel de instanci
     public void setAno(float pAno) {  
         float Ano = pAno;  
   
     }  
     //o certo seria
     public void setAno(float pAno) {  
         this Ano = pAno;  
   
     }  
   
     public float getAno() {  
   
         return Ano;  
     }  
   
     public void laco() {  
         if (Ano % 4 == 0 & Ano % 100 != 0) {  //na sua comparação falta um & -> &&
                                                                //ja que sua variavel no momento que voce chama o metodo ainda naum teve 
                                                                //nenhum  valor setado é feito a condição baseada no valor iniciado com a classe (0)
                                                                // 0 divido por 4 é zero e o resto é zero sendo assim vai entrar na condição do if
                                                                 
             System.out.print("O Ano Digitado é Bisexto");  //vai exibir esta mensagem
         } else {  
             System.out.println("O Ano Digitado não é Bisexto");  
         }  
   
     }  
 }
Criado 4 de agosto de 2011
Ultima resposta 4 de ago. de 2011
Respostas 8
Participantes 7