[RESOLVIDO] Comparação de tipos primitivos "int" porque não retorna true?

5 respostas
dtxk
int countUsefulDays = countUsefulDays(calendar, payday);

                        System.out.println(countUsefulDays+" "+qtdDiaUtil);

                        if( countUsefulDays < qtdDiaUtil   ){
                            throw new GenerateUsefulDayPaymentException();
                            System.out.println("achei");
                        } else {
                            calendarDiaUtil.set(Calendar.DAY_OF_MONTH, (diaCorrente));
                            //System.out.println(countUsefulDays(calendar, payday));
                        }

Galera estou comparando com o código acima, e quando chega 21 / 21 ele não entra na condição onde eu lanço uma Exception alguem sabe o porque que isso acontece?

5 Respostas

nel

Oi!

Seu código está bem confuso. Não aconselho a dar um nome da uma variavél exatamente igual a de um método.
Tens certeza que os valores são iguais? O que está sendo impresso?

E outra, o que faz o seu método countUsefulDays?
Abraços.

gabrielhof

O correto não seria:

countUsefulDays <= qtdDiaUtil
rmendes08
dtxk:
int countUsefulDays = countUsefulDays(calendar, payday);

                        System.out.println(countUsefulDays+" "+qtdDiaUtil);

                        if( countUsefulDays < qtdDiaUtil   ){
                            throw new GenerateUsefulDayPaymentException();
                            System.out.println("achei");
                        } else {
                            calendarDiaUtil.set(Calendar.DAY_OF_MONTH, (diaCorrente));
                            //System.out.println(countUsefulDays(calendar, payday));
                        }

Galera estou comparando com o código acima, e quando chega 21 / 21 ele não entra na condição onde eu lanço uma Exception alguem sabe o porque que isso acontece?

Mas isso é óbvio! A condição de entrada é "countUsefulDays MENOR QUE qtdDiaUtil". Logo, se countUsefulDays = 21 e qtdDiaUtil = 21 então ele tem é que desviar para o bloco else. Além do mais, o comando " System.out.println("achei");" é inalcançável, pois você lança uma exceção logo antes.

E

Dia útil não é “useful day” mas “working day” ou “workday” ou “weekday”.

http://pt.bab.la/dicionario/ingles-portugues/working-day -

dtxk
rmendes08:
dtxk:
int countUsefulDays = countUsefulDays(calendar, payday);

                        System.out.println(countUsefulDays+" "+qtdDiaUtil);

                        if( countUsefulDays < qtdDiaUtil   ){
                            throw new GenerateUsefulDayPaymentException();
                            System.out.println("achei");
                        } else {
                            calendarDiaUtil.set(Calendar.DAY_OF_MONTH, (diaCorrente));
                            //System.out.println(countUsefulDays(calendar, payday));
                        }

Galera estou comparando com o código acima, e quando chega 21 / 21 ele não entra na condição onde eu lanço uma Exception alguem sabe o porque que isso acontece?

Mas isso é óbvio! A condição de entrada é "countUsefulDays MENOR QUE qtdDiaUtil". Logo, se countUsefulDays = 21 e qtdDiaUtil = 21 então ele tem é que desviar para o bloco else. Além do mais, o comando " System.out.println("achei");" é inalcançável, pois você lança uma exceção logo antes.

valeu pela ajuda mas ja tinha resolvido... enquanto ao "achei" eu esqueci de tirar no exemplo...

Obrigado!

Criado 22 de agosto de 2011
Ultima resposta 22 de ago. de 2011
Respostas 5
Participantes 5