If a total of days is greater than 30 and less than 60, I do something. If it's bigger than 60 and smaller than 90 I do something else and so on. How do I case
? Is case
the best option?
If a total of days is greater than 30 and less than 60, I do something. If it's bigger than 60 and smaller than 90 I do something else and so on. How do I case
? Is case
the best option?
Use if
and else if
this way:
int dias = 60;
if (dias < 30)
{
System.Console.WriteLine("até 29");
}
else if (dias < 60)
{
System.Console.WriteLine("de 30 até 59");
}
else if (dias < 90)
{
System.Console.WriteLine("de 60 até 89");
}
else if (dias < 120)
{
System.Console.WriteLine("de 90 até 119");
}
else
{
System.Console.WriteLine("acima de 120");
}
There are several ways.
Switch
With switch
this is what comes to my head:
int mes = (int)System.Math.Floor((decimal)dias / 30);
switch(mes){
case 0:
break;
case 1:
// faz uma coisa
break;
case 2:
// faz outra
break;
case 3:
case 4:
// faz outra..
break;
default:
break;
}
Of course, it would have to be seen first if the ranges are multiples of 30 and if they are opened or closed.
If
With If
, the most obvious would be:
if (dias > 30){
if (dias < 60){
// faz uma coisa
}
else if (dias < 90){
// faz uma outra coisa
}
[...]
}
or depending on whether it is a command:
var outputDeDias = EvalDias(dias);
private string EvalDias(int dias){
if (dias < 30){
return null;
}
if (dias < 60){
return "uma coisa";
}
if (dias < 90){
return "outra coisa";
}
[...]
return null;
}
Come on. If it's "so on," we can write something like this.
public void Tests(int diasInseridos)
{
int dias = diasInseridos;
bool selected = false;//variavel que aciona um 'break' no momento em que entramos em alguma condição(if/else) válida
int comparadorInicial = 30;//variavel comparadora de valor menor
int comparadorFinal = 60;//variavel comparadora de valor maior
while (selected == false)
{
if (dias == null || dias <= 0)
{
//Aqui retorna nenhum dia
selected = true;//booleano para sair do laço
}
else if (dias > comparadorInicial && dias < comparadorFinal)
{
//Seu código retorna de acordo com os dias que seu programa detectou
selected = true;//booleano para sair do laço
}
else
{
comparadorInicial = comparadorInicial + 30;
comparadorFinal = comparadorFinal + 30;
}
}
}
You should use multiple if
's instead of switch
. The switch is for comparing point values, not being able to compare ranges as you indicated in the question.
if (30 <= tempo && tempo < 60)
{
}
else if (60 <= tempo && tempo < 90)
{
}
Then you're nesting the if
's in else
' s successively as far as you need.