Amigos,
É possivel usar o && e || juntos no mesmo código ? E o || mais de uma vez.
Exemplo:
if(dia > 30 && mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
Amigos,
É possivel usar o && e || juntos no mesmo código ? E o || mais de uma vez.
Exemplo:
if(dia > 30 && mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12)
Sim, é perfeitamente possível, e o código está correto. Você pode combinar essas operações lógicas de acordo com sua necessidade.
Olá Vítor! É possível combinar os operadores lógicos sim, todos eles, tanto os mencionados por você, E ( && ) e OU ( || ) , como também o de negação (!). Só cuidado para não se perder com tantos operadores juntos!!
Abraços e sucesso nos estudos!
Roberta,
Obrigado. Realmente não correu erro na compilação, mas o meu código não esta retornando o valor certo, veja por favor:
public void preencherData(int dia, int mes, int ano){
if(dia > 29 && mes == 2){
this.dia = 29;
this.mes = 2;
this.ano = ano;
}else if(dia > 31 && mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12){
this.dia = 31;
this.mes = mes;
this.ano = ano;
}else{
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
}
Quando eu defino a data dataDeEntrada.preencherData(10, 3, 2016);
Retorna:
31/3/2016
O que pode estar errado ?
Teria que retornar
10/3/2016
Olá Vítor! Neste trecho de código que postou não é possível verificar o porque deste retorno. Este trecho está com a lógica correta. Poderia postar o restante do código?
Bom, vou analisar esse código. Só cuidado com o operador >. Você colocou > para 29 e mês 2, o mês 2 não tem dia maior que 29, apenas 29. E também no dia 31, não existe dia maior, eu sugeriria o operador ==.
E sim, o código teria que dar o retorno correto para essa data específica, não sei o que pode estar errado.
class Data{
int dia;
int mes;
int ano;
public void preencherData(int dia, int mes, int ano){
if(dia > 29 && mes == 2){
this.dia = 29;
this.mes = 2;
this.ano = ano;
}else if(dia > 31 && mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12){
this.dia = 31;
this.mes = mes;
this.ano = ano;
}else{
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
}
String getFormatada() {
return this.dia + "/" + this.mes + "/" + this.ano;
}
}
class TestaEmpresa{
public static void main(String[] args){
Data dataDeEntrada = new Data();
dataDeEntrada.preencherData(10, 3, 2016);
System.out.println(dataDeEntrada.getFormatada());
}
}
Vítor, este trecho está com problemas sim. Altere para:
else if(dia > 31 && (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12))
A condição dos meses deve estar entre parênteses.
Testa aí e dá uma alô!
Boa André. Funcionou agora, retornou 10/3/2016 !!!
Obrigado tb Roberta !!!
Ah, exato, os parênteses, não tinha reparado que faltava. Esses leitores de tela enganam às vezes. Eles são necessários pois as condições são diferentes e é necessário atendê-las.