Java Puzzle 01 – Oddity

Merhaba Arkadaslar,
Bu yazilarim boyunca Java’nin trickleri, tuzaklari, “nasil ya?” dedirtecek bilgiler, kodlar verecegim. Cogu zaman kodlarimiz cok cok kisa olacak.

Metodumuzu inceleyelim ; Bu metod ne yapmaktadir ? number’in 2 ye modunu (%) almakta ve kalanin 1 olup olmadigini kontrol etmektedir. Yani sayimiz tek olup olmadigini true/false olarak donmektedir.

odd kelime anlami “tek sayi” demektir.

	public static boolean isOdd(int number) {
		return number % 2 == 1;
	}

Peki bu konuda ornek veriler icin test edelim ;

OddityTest.java

package _01.oddity;

public class OddityTest {

	public static boolean isOdd(int number) {
		return number % 2 == 1;
	}

	public static void main(String[] args) {
		System.out.println("IsOdd:" + isOdd(5));
		System.out.println("IsOdd:" + isOdd(10));
		System.out.println("IsOdd:" + isOdd(-5));
		System.out.println("IsOdd:" + isOdd(-10));
	}
}
IsOdd:true
IsOdd:false
IsOdd:false
IsOdd:false

-5 sayisini tek sayi olarak kabul etmedi ve false oldu. -5%2 isleminin sonucu 1 degil -1 olacaktir.
Bu nedenle metodumuz su sekilde olmalidir;

 public static boolean isOdd(int number) {
     return number % 2 != 0;
 }

Performansin onemli oldugu durumda % operatoru yerine bitwise & kullanilarak daha verimli olacak sekilde su metod yazilabilir.

 public static boolean isOdd(int number) {
     return (number & 1) != 0;
 }
IsOdd:true
IsOdd:false
IsOdd:true
IsOdd:false

OddityTest.java

package _01.oddity;

public class OddityTest {

	// not works for negative numbers!

	// public static boolean isOdd(int number) {
	// return number % 2 == 1;
	// }
	//

	// It is ok for negative numbers too.
	
	// public static boolean isOdd(int number) {
	// return number % 2 != 0;
	// }
	
	//better performance
	public static boolean isOdd(int number) {
		return (number & 1) != 0;
	}

	public static void main(String[] args) {
		System.out.println("IsOdd:" + isOdd(5));
		System.out.println("IsOdd:" + isOdd(10));
		System.out.println("IsOdd:" + isOdd(-5));
		System.out.println("IsOdd:" + isOdd(-10));
	}
}

Yazimi burada sonlandiriyorum.
Herkese bol Javali gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer

 

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *