Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get rid of ugly if statements

I have this ugly code:

if ( v > 10 ) size = 6; if ( v > 22 ) size = 5; if ( v > 51 ) size = 4; if ( v > 68 ) size = 3; if ( v > 117 ) size = 2; if ( v > 145 ) size = 1; return size; 

How can I get rid of the multiple if statements?

like image 537
kofucii Avatar asked Sep 24 '10 10:09

kofucii


People also ask

How do you reduce nested if statements in Java?

getSelection() != null can however often be transformed to reduce the nesting. Consider some kind of if (freqChooser. getSelection() == null) { return ... } or similar possibilities.


1 Answers

How about such approach:

int getSize(int v) {     int[] thresholds = {145, 117, 68, 51, 22, 10};      for (int i = 0; i < thresholds.length; i++) {         if (v > thresholds[i]) return i+1;     }     return 1; } 

Functionally: (Demonstrated in Scala)

def getSize(v: Int): Int = {   val thresholds = Vector(145, 117, 68, 51, 22, 10)   thresholds.zipWithIndex.find(v > _._1).map(_._2).getOrElse(0) + 1 } 
like image 99
mfloryan Avatar answered Nov 18 '22 14:11

mfloryan