Merhaba Arkadaşlar,
mobilhanem.com sitemizden anlattığımız Temel Java Dersleri yazı serimize bu dersimizde, bugüne kadar öğrendiğimiz konulardan genel olarak Java Algoritma Alıştırmalar’ı ve Örnek kodlar ile devam edeceğiz. Bir önceki Java alıştırmalarımız ve örnek java kodlarımız/algoritmalarımız için tıklayınız.
Yazı serimizde bildiğiniz üzere metotlara kadar geldik ve metot derslerine devam edeceğiz. Ben bu dersimde metottan önceki dersleri içeren örnekler paylaşacağım. Çünkü döngüler ,if-else yapısı,temel veri tiplerini çok iyi öğrenmemiz ve pekiştirmemiz lazım ki bundan sonraki derslerde zorluk çekmeyelim. Bundan sonrada her konunun sonunda 1 ve ya 2 ders, o konu ile ilgili özellikle java iş görüşmelerinde çıkabilecek örnek kodlar/algoritmalar paylaşacağım. Umarım sizlere faydası olur.
Lafı fazla uzatmadan örneklere geçelim.
Not: Paylaştığımız her çözümün alternatifleri olabilir. Sizlerde konu altından yorumlarınızı bırakabilirsiniz.
Alıştırma 1
Girdiğimiz integer değeri 2’lik sayı sistemi’nde(binary) yazan java algoritma/kodunu yazınız ? Integer.toBinaryString() methodunu kullanmadan.
Örnek 1:
input = 5
output =101
Örnek 2:
input = 16
output =10000
Kod:
import java.util.Scanner;
public class IntegerToDecimal {
public static void main(String args[]) {
Scanner inp = new Scanner(System.in);
System.out.println("Sayi giriniz :");
int sayi = inp.nextInt();
String decimalString ="";
for(int i = sayi;i>0;i/=2){
decimalString = (i%2)+ decimalString;
}
System.out.println(decimalString);
}
}
Açıklama : Ondalık sayıların dönüşümü hakkında detaylı bilgi için tıklayınız.
Alıştırma 2
Kullanıcıdan alınan iki sayının en büyük ortak bölenini(ebob) veren java algoritma/kodunu yazınız ?
Örnek 1:
input1 = 20
input2 = 30
output =10
Örnek 2:
input1 = 120
input2 = 80
output =40
Kod:
import java.util.Scanner;
public class EBOB { //en büyük ortak bölen
public static void main(String args[]) {
Scanner inp = new Scanner(System.in);
System.out.print("İlk sayıyı giriniz: ");
int sayi1 = inp.nextInt();
System.out.print("İkinci sayıyı giriniz: ");
int sayi2 = inp.nextInt();
int kucukSayi = Math.min(sayi1,sayi2); // En büyük ortak bölen küçük sayıdan büyük olamaz
int ebob = 0;
for(int i = kucukSayi;i>0;i--){
if(sayi1%i==0 && sayi2%i==0){ //her iki sayıyıda bölüyorsa
ebob = i;
break; // Her iki sayıyıda bölen ilk sayı zaten en büyük ortak bölendir. o yüzden döngüye devam etmeye gerek yoktur.
}
}
System.out.println("EBOB :"+ebob);
}
}
Alıştırma 3
Kullanıcıdan alınan sayının asal çarpanlarını veren java algoritma/kodunu yazınız ?
Örnek 1:
input1 = 20
output =2 2 5
Örnek 2:
input1 = 120
output =2 2 2 3 5
Kod:
import java.util.Scanner;
public class AsalCarpan { //en büyük ortak bölen
public static void main(String args[]) {
Scanner inp = new Scanner(System.in);
System.out.print("Sayıyı giriniz: ");
int sayi = inp.nextInt();
int bolen = 2; //en küçük asal sayı
int bolunen = sayi;
System.out.print("Asal çarpanlar : ");
while(bolen<sayi){ //bolen sayı 2 den başlıyor girilen sayıya kadar 1 artıyor
if(bolunen % bolen == 0){ //Aynı sayi 1 den daha fazla bölebileceği için, böldüğü müddetçe bolen sayiyi artırmiyoruz
System.out.print(bolen+" ");
bolunen /= bolen;
}else{ //eğer bolunen sayiyi tam bölemiyorsa 1 artırarak devam ediyoruz ve 1 sonraki sayıyı kontrol ediyoruz
bolen++;
}
}
System.out.print(sayi == bolunen ? "Asal sayı Girdiniz":"");
}
}
Alıştırma 4
Kullanıcıdan alınan sayı kadar aşağıdaki şekilde(4’ün katları şeklinde) piramit veren java algoritma/kodunu yazınız ?
Örnek 1:
input1 = 5
output =
1
1 4 1
1 4 16 4 1
1 4 16 64 16 4 1
1 4 16 64 256 64 16 4 1
Örnek 2:
input1 = 8
output =
1
1 4 1
1 4 16 4 1
1 4 16 64 16 4 1
1 4 16 64 256 64 16 4 1
1 4 16 64 256 1024 256 64 16 4 1
1 4 16 64 256 1024 4096 1024 256 64 16 4 1
1 4 16 64 256 1024 4096 16384 4096 1024 256 64 16 4 1
Kod:
import java.util.Scanner;
public class Piramit { //en büyük ortak bölen
public static void main(String args[]) {
Scanner inp = new Scanner(System.in);
System.out.print("Sayıyı giriniz: ");
int sayi = inp.nextInt();
for(int i = 0;i<=sayi-1;i++){
int pow = 1;
for(int j = 1 ;j<= sayi*2-1; j++){ //Her seferinde 2n-1 defa dönecek.
if(j>=sayi-i && j<=sayi+i){ //Eğer bu aralıkta ise yazacak aralıkta değilse boşluk bırakacak
System.out.printf("%6d",pow); //printf kullanmamızın sebebi boşlukları ayarlamak
if(j<=sayi-1) //Ortadaki sayıya kadar 4 ile çarpılacak , sonrasonda 4 e bölünecek
pow *= 4;
else
pow /= 4;
}else{
System.out.printf("%6s","");
}
}
System.out.println();
}
}
}
Not: printf() hakkında detaylı bilgi.
Alıştırma 5
Taş,Kağıt,Makas oyununu bilgisayara karşı oynayacağız ve 3 yapan kazanacak. 0-taş ,1-kağıt ,2-makas olduğunu varsayalım. Bilgisayar random olarak 0,1,2 üretecek bizde konsoldan bilgisayarın ne ürettiğini görmeden 0,1,2 değerlerinden birini gireceğiz ve toplamda 3 defa yenen ,oyunu kazanmış olacak.
Örnek 1:
Taş,Kağıt,Makas ?
1
Bilgisayar :Makas.
Kullanıcı :Kağıt
Bu eli bilgisayar kazandı
Kullanıcı : 0 – Bilgisayar : 1
Örnek 2:
Taş,Kağıt,Makas ?
2
Bilgisayar :Taş.
Kullanıcı :Makas
Bu eli bilgisayar kazandı
Kullanıcı : 2 – Bilgisayar : 3
BİLGİSAYAR KAZANDI
import java.util.Scanner;
public class TasKagitMakas {
public static void main(String args[]) {
//0-taş //1-kağıt //2-makas
//3 yapan kazanır
Scanner inp = new Scanner(System.in);
int bilgisayarKazandi = 0;
int kullaniciKazandi = 0;
while(bilgisayarKazandi<3 && kullaniciKazandi<3){ //3 yapan kazanır
System.out.println("Taş,Kağıt,Makas ?"); //Kullanıcıdan değer alınıyor. //o,1,2 dışı kontrlleri siz eklersiniz
int kullanici = inp.nextInt(); //kullanıcıdan alınan değer kullanici değişkenine atandı
int bilgisayar = (int)(Math.random()*3); //bilgisiyar 0,1,2 random değer oluşturuyor
System.out.print("Bilgisayar :"); //Bilgisayarın değeri yazdırılıyor
switch (bilgisayar)
{
case 0: System.out.println("Taş."); break;
case 1: System.out.println("Kağıt."); break;
case 2: System.out.println("Makas.");
}
System.out.print("Kullanıcı :"); //kullanıcı değeri
switch (kullanici)
{
case 0: System.out.println("Taş"); break;
case 1: System.out.println("Kağıt"); break;
case 2: System.out.println("Makas ");
}
if(kullanici==bilgisayar){
System.out.println("Berabere");
} else{
if((kullanici==0 && bilgisayar ==2) || (kullanici==1 && bilgisayar ==0) || (kullanici==2 && bilgisayar ==1)){
System.out.println("Bu eli kullanıcı kazandı");
kullaniciKazandi++;
}else{
System.out.println("Bu eli bilgisayar kazandı");
bilgisayarKazandi++;
}
}
System.out.println("Kullanıcı : "+kullaniciKazandi+" - "+ "Bilgisayar : "+bilgisayarKazandi);
}
System.out.println(kullaniciKazandi==3 ? "KULLANICI KAZANDI":"BİLGİSAYAR KAZANDI");
}
}
Evet arkadaşlar geçenki dersimizden biraz daha zor sorularla bildiklerimizi pekiştirdik ve java algoritma / kod örnekleri yazarak sonraki derslerimiz için daha hazır bir hale geldik 🙂 Umarım derslerimiz sizler için faydalı oluyordur.
Bir sonraki Temel Java Dersimize metot’ların ikinci kısmını ile devam edeceğiz. Konuyla ilgili yorumlarınızı konu altından yapabilirsiniz, ayrıca sorularınızı Mobilhanem Soru&Cevap bölümünden sorabilirsiniz.
Tüm Temel Java Dersleri için tıklayınız..
29


Slack Grubumuza Üye Oldunuz mu ?

Birinci uygulama sizin dediğiniz şekilde bir türlü olmadı. Ben şu şekilde yapabildim.
package imtal; import java.util.Scanner;; public class bilisim { public static void main(String[] args) { Scanner giris = new Scanner(System.in); System.out.print("sayı gir: "); int sayi = giris.nextInt(); System.out.print(sayi + " sayısının ikili hali: "); String ikili = ""; for(int i = sayi; i > 0; i-- ){ ikili = sayi % 2 + ikili; sayi = sayi / 2 ; if(sayi == 0){ break;} } System.out.print(ikili); } }Asal çarpanları bulma için benim çözümüm
package mobilhanem; import java.util.Scanner;; public class asal_carpanlar { public static void main(String[] args) { Scanner giris = new Scanner(System.in); System.out.print("sayıyı gir: "); int sayi = giris.nextInt(); String asallar = ""; System.out.print(sayi + " sayısının asal çarpanları: "); for(int i = 2; i < sayi; i++ ){ if(sayi % i == 0 ){ asallar = asallar + " " + i; sayi = sayi / i; i = 1; } } System.out.print(asallar + " " + sayi); } }Taş, Kağıt, Makas oyununda 2’den büyük değerlerde ve keyboarddan String değer girişi yapıldığında hata vermemesi için ufak düzenlemeler ile kodu geliştirmeye çalıştım. Bunun yanı sıra oyun sonuna yeni oyuna başlansın mı evet veya hayır şeklinde eklenip tekrar başa dönülebilir basitçe.
import java.util.Scanner; public class RockPaperScissorsFinal { public static void main(String args[]) { // 0-Rock 1-Paper 2-Scissor// Who scores 3 is going to win. Scanner input = new Scanner(System.in); int computerWon = 0; int playerWon = 0; System.out.println("Please enter your name: "); // Introduce your name String playerName = input.next(); // Introduced name assigned to Player Name int player = -1; boolean isContinue = true; while (isContinue) { try { while (computerWon < 3 && playerWon < 3) { System.out.println("(0)Rock,(1)Paper,(2)Scissors?"); String player1 = input.next();// String to Integer Parsing player = Integer.parseInt(player1); int computer = (int) (Math.random() * 3); isContinue = false; if (player >= 0 && player <= 2) { //Choose from Keyboard between 0 to 2 System.out.println("Your are good to go"); System.out.print("Computer :"); // Randomly Choose of Computer switch (computer) { case 0: System.out.println("Rock."); break; case 1: System.out.println("Paper."); break; case 2: System.out.println("Scissor."); } System.out.print(playerName + ":"); // Choose of Player switch (player) { case 0: System.out.println("Rock."); break; case 1: System.out.println("Paper."); break; case 2: System.out.println("Scissor."); } if (player == computer) { //If player choose same as computer, match is drawing System.out.println("Draw"); } else { if ((player == 0 && computer == 2) || (player == 1 && computer == 0) || (player == 2 && computer == 1)) { System.out.println(playerName + " won this game!"); playerWon++; } else { System.out.println("Computer won this game!"); computerWon++; } System.out.println(playerName + " : " + playerWon + " - " + "Computer : " + computerWon); } } else { System.out.println("Not a valid play from Keyboard, Please try again!"); isContinue = true; } } System.out.println(playerWon == 3 ? playerName + " Won!" : "Computer Won!"); } catch (NumberFormatException e) { System.out.println("Not an valid play from Keyboard, Please try again!"); } } } }paylaşım için teşekkürler
Alıştırma 4 ü kendi yorumumla yaptım if else kullanmadım sadece for döngüleriyle yaptım
package Package1;
import java.util.Scanner;
public class Deneme25 {
public static void main(String[] args)
{
Scanner al_bunu = new Scanner(System.in);
System.out.print(“Bir değer giriniz= “);
int deger = al_bunu.nextInt();
System.out.println(“Sonuç= “+deger);
int katlar=1;
int dusen_deger=deger;
for(int i=0;i<=deger;i++)
{
katlar*=4;
dusen_deger–;
for (int sol_bosluk =0;sol_bosluk<=dusen_deger;sol_bosluk++)
{
System.out.printf("%10s"," ");
}
for (int katlar3=1;katlar3=1;katlar2/=4)
{
System.out.printf(“%10d”,katlar2);
}
System.out.println(“”);
}
}
}
Benim yaptığım taş, kağıt, makas oyunu
package Package1;
import java.util.Scanner;
public class Deneme26 {
public static void main(String[] args)
{
String oyuncu=””;
String bilgisayar=””;
int oyuncu_score=0;
int bil_score=0;
boolean kontrol=true;
for(int i=0;ibil_score) System.out.println(“Sen kazandın”);
else if (oyuncu_score<bil_score)System.out.println("Bilgisayar kazandı");
else System.out.println ("Berabere");
}
}
}
int x, y, u, a,i,s;
Scanner klavye = new Scanner(System.in);
System.out.println (“İki Sayı giriniz”);
x = klavye.nextInt();
y = klavye.nextInt();
u = x;
s = y;
if (x>=y) {
for (i=y; i>0;) {
a = x % y;
x = y;
y = a;
if (y!=0) {
i=2;
}
else {
i=-1;
System.out.println(“EBOB(” + s + “,”+ u + “)=” + x);
}
}
}
else
System.out.println(“burası olmasada olur”);