Ola mais uma vez eu estou com problemas com multiplos return’s em meu codigo…
o método é mais ou menos assim
public int checkDay( int day )
{
int dayPerMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if( day > 0 && day <= dayPerMonth[ this.month ] )
return day;
System.out.prinln( "Dia invalido setando dia para: 1" );
return 1;
}
e com mais alguns returns no meio dele… pois bem o codigo sempre retorna o ultimo return do codigo… eu gostaria de saber o que fazer pois estou sem ideias ja
ah sim… e tem outra se eu nao colocar um return fora de alguma estrutura condicional (no metodo mesmo) ele pede pra colocar… e se eu nao quiser como faco ?
Jboy, como vc mesmo declarou o seu metodo ele retorna um int , entao vc deve colocar condicoes nele para tal proposito
por exemplo:
public int geMes(int mes){
if (mes != null)
return mes;
// esse return é encoberto pela condicao por isso q vc
//precisa declarar um outro fora se ele é executado finish, nada mais e
//feito ok?
estou contando sim… mas o problema disso é que quando eu coloco os returns ele sempre manda de volta o valor 1 e nao o valor achado… por exemplo
Ele recebe o dia 20 e ao inves dele receber o dia 20 de volta já checado e analisado ele retorna 1 sacou ?
Eu estou tentando setar variaveis private na classe pra poder depois com um método toString() retornar os valores já formatados.
Uma dica sobre estilo: normalmente, é considerado “feio” usar mais de um return no mesmo método. É possível escrever qualquer algoritmo usando apenas um return, e voce se perde bem menos
Ah, outra dica: use um depurador - o Eclipse tem um ótimo
me desculpem pelo tempo que eu nao postei nenhuma msg sobre o assunto. estive sem tempo.
pois bem vamos ao que interessa
eu uso uma chamada de metodo da seguinte maneira:
Data d = new Data( 7, 10, 1986 );
sendo os valores dia mes e ano respectivamente.
O problema eh que quando eu chamo o metodo ele tem no construtor uma chamada para outro metodo que eh o metodo checkDay(); que é justamente esse metodo que eu transcrevi para o forum. So que esse metodo ele testa pelo mes em um vetor se o dia eh possivel para aquele mes. so que quando eu retorno o valor da variavel ele nao esta retornando gostaria de saber porque ai vai o metodo construtor
public Data( int day, int month, int year )
{
this.year = checkYear( year );
this.month = checkMonth( month );
this.day = checkDay( day );
}
e o metodo checa o dia e o retorna se estiver correto com o valor e com 1 se o valor nao estiver correto mas ele sempre esta retornando 1 por ser o ultimo return gostaria de saber uma opcao para mudalo.
valeu e tomara que seja a ultima msg sobre isso ne ?
Seu método checkDay funcionou perfeitamente aki, provavelmente o erro esta em alguma outra parte do código. Aparentemente o mais provável é que o mes pode estar sendo setado para 0, por algum motivo.
Antes de vc chamar método checkDay, vc chama os métodos checkYear e checkMonth, talvez o erro possa esta em algum deles.
Ou talvez vc tenha se enrolado na utilização das variaveis globais e locais com o mesmo nome, é recomendado que vc evite isso ao máximo!
aki está o código que eu usei para testar seu método:
public class Teste {
public int month;
public int checkDay( int day ) {
int dayPerMonth[] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
if( day > 0 && day <= dayPerMonth[ this.month ] )
return day;
System.out.println( "Dia invalido setando dia para: 1" );
return 1;
}
public static void main(String args[]){
Teste app= new Teste();
app.month=10;
System.out.println("Dia "+app.checkDay(7));
}
}
pu$% que *#riu… hehe eu nao sei se eu fico com raiva pela besteira que era o erro ou se eu fico feliz por ter descoberto
tem um metodo construtor no programa que eh o seguinte:
public Data( int day, int month, int year )
{
this.year = this.checkYear( year );
this.month = this.checkMonth( month );
this.day = this.checkDay( day );
}
Esta ultima linha do day tava primeiro so que como o metodo checkDay() precisa do month e ele n tinha sido inicializado entao ele sempre dava erro. Valeu bixo obrigado mermo eh florida
ps. e realmente teve aquele ahhhhhhhhhhhhhhhh pooo… qnd achei o erro