Mehmet Ethem SULAN :: Java Programlama Dili :: Java ile Taban Dönüştürme Örneği

Java ile taban çeviren bir uygulama yazmaya çalıştım. tabanCevir(bir tam sayı, çevirmek istenen taban) şeklindedir. Örneğin sayimiz 3 ve çevirmek istediğimiz taban 2 ise tabanCevir(3,2) şeklinde yazılır. 3 ün ikili tabanda(0 ve 1) 11 şeklinde consola yazar. Ayrıca reverse() yani stringleri ters çeviren bir metod ile ters çevirdim. StringBuilderda reverse() metodu zaten var ama kendim yazmak istedim.
TabanCevir.java

package ethemsulan.com;

public class TabanCevir {
	public static String reverse(String deger)
	{
		String sonuc = "";
		for (int i = deger.length(); i >0; i--) {
			sonuc += deger.substring(i-1, i);
		}
		return sonuc;
	}
	static int i=0;
	static String cevrilenString="";
	public static String tabanCevir(int sayi, int cevTaban)
	{
		if(cevTaban<2 || cevTaban>16)
		{
			return "Taban 2-16 arasinda olmali";
		}
		else if(sayi<cevTaban)
		{
			cevrilenString+=sayi;
			return reverse(cevrilenString);
		}else
		{
			while(true)
			{
				if(sayi<cevTaban)
				{
					cevrilenString+=sayi;
					break;
				}else if(sayi>cevTaban && cevTaban>10)
				{
					sayi = OndanBuyukTaban(sayi, cevTaban);
					

				}else{
					cevrilenString+=sayi%cevTaban;
					sayi=sayi/cevTaban;
				}
			}
			if(i==1)
			{
				return cevrilenString;
			}
			return reverse(cevrilenString);
		}
	}
	private static int OndanBuyukTaban(int sayi, int cevTaban) {
		if(sayi/cevTaban==10)
		{
			cevrilenString+="a";
			sayi=sayi%cevTaban;
			i=1;
		}else if(sayi/cevTaban==11)
		{
			cevrilenString+="b";
			sayi=sayi%cevTaban;
			i=1;
		}else if(sayi/cevTaban==12)
		{
			cevrilenString+="c";
			sayi=sayi%cevTaban;
			i=1;
		}else if(sayi/cevTaban==13)
		{
			cevrilenString+="d";
			sayi=sayi%cevTaban;
			i=1;
		}else if(sayi/cevTaban==14)
		{
			cevrilenString+="e";
			sayi=sayi%cevTaban;
			i=1;
		}else if(sayi/cevTaban==15)
		{
			cevrilenString+="f";
			sayi=sayi%cevTaban;
			i=1;
		}else{
			sayi = OndanKucukTaban(sayi, cevTaban);
			
		}
		return sayi;
	}
	private static int OndanKucukTaban(int sayi, int cevTaban) {
		if(sayi%cevTaban==10)
		{
			cevrilenString+="a";
			sayi=sayi/cevTaban;
			i=0;
		}else if(sayi%cevTaban==11)
		{
			cevrilenString+="b";
			sayi=sayi/cevTaban;
			i=0;
		}else if(sayi%cevTaban==12)
		{
			cevrilenString+="c";
			sayi=sayi/cevTaban;
			i=0;
		}else if(sayi%cevTaban==13)
		{
			cevrilenString+="d";
			sayi=sayi/cevTaban;
			i=0;
		}else if(sayi%cevTaban==14)
		{
			cevrilenString+="e";
			sayi=sayi/cevTaban;
			i=0;
		}else if(sayi%cevTaban==15)
		{
			cevrilenString+="f";
			sayi=sayi/cevTaban;
			i=0;
		}
		else{
		cevrilenString+=sayi%cevTaban;
		sayi=sayi/cevTaban;
		i=0;
		}
		return sayi;
	}
}

Test.java

package ethemsulan.com;

public class Test {
	public static void main(String[] args) {
//tabanCevir(Sayimiz, CevrilmekIstenenTaban)
//Test edilen durumlar tabanCevir(1110, 11): 91a
//tabanCevir(111, 11): a1 , tabanCevir(11, 2): 1011
//tabanCevir(500, 14): 27a, tabanCevir(700, 21): 1c7
//tabanCevir(700, 2): 1010111100 , tabanCevir(555, 3): 202120
//tabanCevir(5555, 16): 15b3
		System.out.println(TabanCevir.tabanCevir(3, 2));
	}
}

Çok fazla ifler var uygulamada.

Write a Comment

Let me know what you think?