Java Soru
-
Selam muridler javada 3 farkli int turden sayi arasindaki buyuk kucuk ve esitlik iliskisini kucukden buyuge yazdiran programi kendi capimda yapmayi basardim
sizden ricam bu kodu ne sekilde iyilestirebilirim ve daha yalin hale getirebilirim yani hangi yontemleri kullanmak gerekir
NOT : Yapin verin demiyorum hocam sadece ipuclari ve izlenicek yol seklinde aciklarsaniz kendim ugrasmak istiyorum.
ornek kodum = http://paste.ubuntu.com/11799886/
ekran ciktisi su sekilde olucak 10 < 20 < 30 veya 40=40 < 50 seklinde
-
Girilen sayılar 0 dan küçükse hata mesajı versin, 0 dan büyük sayı girilene kadar sayı girilmesini istesin.
Sayıların ortalamasını bulsun
Sayıların en büyüğünü ve en küçüğünü bulsun
Bunlar akloma geldi hocam :)
-
Öncelikle aralardaki iflerin başına else atmalısın. Bunu yapmazsan diğer if sorgularını da çalıştırır programın ama sorgu false döndüğü için içerideki işlemi yapmaz.
üç sayı için pek bir önemi yok ama daha fazla sayı okursan bunları bir container içerisinde tutup onu sortlarsın. sorting algoritmalarına gözat. Daha sonra sırayla gezip ikisi aynı geldiğinde = değilse < işareti koyarak sırayla bastırırsın. Tabi buradaki mevzu iç içe yazacağın iflerin kaç tanesinin kontrol edildiği, ki worst case'de en sondakidir, sort işleminden daha kısa olması durumunda if yazabilirsin. Ama bana sort daha mantıklı gibi geldi hem kodun okunurluğu açısından hem de hız açısından.
Görsellik açısından;
http://www.sorting-algorithms.com/
Karşılaştırma açısından;
https://en.wikipedia.org/wiki/Sorting_algorithm
Bu da türkçe;
https://tr.wikipedia.org/wiki/S%C4%B1ralama_algoritmas%C4%B1
-
@zorkaya, hocam nested if lerden bahsediyorsan problem yok o şekilde yazılabilir, süslü parantez koymasına da gerek yok.. ana if lerden bahsediyorsan onlarda da sorun yok, çünkü birden fazla şarta uyabilir. arkadaşın yapmaya çalıştığı zaten bu şekilde, yanlış anladığını düşünmüyorum
@absolut, switch-case ile dene, recursive metodları öğren, int yerine değişik veri tiplerini kullan, sorting algorimalarını öğren (ki çok önemlidir), 4 işlem yapan bir şeyler yap ve oradaki istisnalara dikkat et, her hangi bir sayının 0 a bölünemeyeceği gibi.. ayrıca implicit/explicit castingleri de öğren (tür dönüşümleri), operator işlemlerine bak (modülüs, ++x, x++, x-- ... gibi http://www.baskent.edu.tr/~tkaracay/etudio/ders/prg/java/ch06/arithmeticOperators.pdf )
mesela print(x++); ile print (++x); nin farkı
kolay gelsin
-
ZoRKaYa bunu yazdı
Öncelikle aralardaki iflerin başına else atmalısın. Bunu yapmazsan diğer if sorgularını da çalıştırır programın ama sorgu false döndüğü için içerideki işlemi yapmaz.
üç sayı için pek bir önemi yok ama daha fazla sayı okursan bunları bir container içerisinde tutup onu sortlarsın. sorting algoritmalarına gözat. Daha sonra sırayla gezip ikisi aynı geldiğinde = değilse < işareti koyarak sırayla bastırırsın. Tabi buradaki mevzu iç içe yazacağın iflerin kaç tanesinin kontrol edildiği, ki worst case'de en sondakidir, sort işleminden daha kısa olması durumunda if yazabilirsin. Ama bana sort daha mantıklı gibi geldi hem kodun okunurluğu açısından hem de hız açısından.
Görsellik açısından;
http://www.sorting-algorithms.com/
Karşılaştırma açısından;
https://en.wikipedia.org/wiki/Sorting_algorithm
Bu da türkçe;
https://tr.wikipedia.org/wiki/S%C4%B1ralama_algoritmas%C4%B1
hocam aradaki if lere else atarsam tam cozemedim cunki 1. iflerde sayi 1 iki ve 3 den buyuk ise sayi 2 ve 3 mu buyuk kontrolu yaptirip yazdirdim else if atmazsam esitlik durumda 2 sinide yazdiriordu 2 kere bu sekilde cozum urettim . bu sekilde sorunsuz calisti dediginiz sort olayina hemen bakicam daha oralara gelemedigimden basit mantik gidiyorum :) ancak verdiginiz linkleri ve cozumleri hemen incelemeye aliyorum o sekil yapabilirsem tekrardan koyarim inceleriz tesekkurler,
@slim_38 hocam tavsiyelerin icin saol ancak o sekil demek istemedim yani sorudan sapmadan bu soru icinde en yalin kod ve sadelestirmeyi yapmakti @ZoRKaYa muridin ornekledigi gibi saolasin :)
-
unbalanced bunu yazdı
@zorkaya, hocam nested if lerden bahsediyorsan problem yok o şekilde yazılabilir, süslü parantez koymasına da gerek yok.. ana if lerden bahsediyorsan onlarda da sorun yok, çünkü birden fazla şarta uyabilir. arkadaşın yapmaya çalıştığı zaten bu şekilde, yanlış anladığını düşünmüyorum
@absolut, switch-case ile dene, recursive metodları öğren, int yerine değişik veri tiplerini kullan, sorting algorimalarını öğren (ki çok önemlidir), 4 işlem yapan bir şeyler yap ve oradaki istisnalara dikkat et, her hangi bir sayının 0 a bölünemeyeceği gibi.. ayrıca implicit/explicit castingleri de öğren (tür dönüşümleri), operator işlemlerine bak (modülüs, ++x, x++, x-- ... gibi http://www.baskent.edu.tr/~tkaracay/etudio/ders/prg/java/ch06/arithmeticOperators.pdf )
mesela print(x++); ile print (++x); nin farkı
kolay gelsin
hocam hoca bildigin kizior konularda onde gidersem :D o yuzden tur donusumu vs detayli bakmiorum sonra derste sknti cikior :) ezberci gidiorsunuz die bagirior hoca :D ancak swich -case sekilinde hic aklima gelmemisti onlara bir goz geciricem hemen o sekil denicem bakalim nasil yapicaz yada yapabilicez mi :)
genel olarak yazilan kodlarda bir sknti varmi yani sizi baktiginizda rahatsiz eden bir sey varmi varsa neresi ve oralarda sizce ne kullanmam gerekirdi
giris seviyesi kodlama olarak dusunerek yorumlayiniz lutfen :D
-
unbalanced bunu yazdı
@zorkaya, hocam nested if lerden bahsediyorsan problem yok o şekilde yazılabilir, süslü parantez koymasına da gerek yok.. ana if lerden bahsediyorsan onlarda da sorun yok, çünkü birden fazla şarta uyabilir. arkadaşın yapmaya çalıştığı zaten bu şekilde, yanlış anladığını düşünmüyorum
@absolut, switch-case ile dene, recursive metodları öğren, int yerine değişik veri tiplerini kullan, sorting algorimalarını öğren (ki çok önemlidir), 4 işlem yapan bir şeyler yap ve oradaki istisnalara dikkat et, her hangi bir sayının 0 a bölünemeyeceği gibi.. ayrıca implicit/explicit castingleri de öğren (tür dönüşümleri), operator işlemlerine bak (modülüs, ++x, x++, x-- ... gibi http://www.baskent.edu.tr/~tkaracay/etudio/ders/prg/java/ch06/arithmeticOperators.pdf )
mesela print(x++); ile print (++x); nin farkı
kolay gelsin
Hocam kodu tekrar oku hem num1<num2 hem num1>num2 nasil olacak. Eger else if yazilmazsa performans kaybi olur.
-
@ZoRKaYa hocam o sekil yapmamin sebebi esitlik durumunda eger kucuk mu yada buyukmu die kontrol ettirmezsem hem esitligi hemde buyuk kucuk kisminda else kismini dogrudan yazdirmasiydi her 2 kisimdanda gecior bu sekil bi cozum bulabildim o yuzden 2 kere baktirdim zaten amacimda o tarz pek mnatikli olmayan seylerin olmasi geren ney onu ogrenmekti sanirim basardim :D
-
Absolut bunu yazdı
@ZoRKaYa hocam o sekil yapmamin sebebi esitlik durumunda eger kucuk mu yada buyukmu die kontrol ettirmezsem hem esitligi hemde buyuk kucuk kisminda else kismini dogrudan yazdirmasiydi her 2 kisimdanda gecior bu sekil bi cozum bulabildim o yuzden 2 kere baktirdim zaten amacimda o tarz pek mnatikli olmayan seylerin olmasi geren ney onu ogrenmekti sanirim basardim :D
Buyuk ihtimal suslu parentezleri kullanmadigin icin alttaki elseler else ifler hangisinin compiler anlayamiyor olabilir.
-
ZoRKaYa bunu yazdıAbsolut bunu yazdı
@ZoRKaYa hocam o sekil yapmamin sebebi esitlik durumunda eger kucuk mu yada buyukmu die kontrol ettirmezsem hem esitligi hemde buyuk kucuk kisminda else kismini dogrudan yazdirmasiydi her 2 kisimdanda gecior bu sekil bi cozum bulabildim o yuzden 2 kere baktirdim zaten amacimda o tarz pek mnatikli olmayan seylerin olmasi geren ney onu ogrenmekti sanirim basardim :D
Buyuk ihtimal suslu parentezleri kullanmadigin icin alttaki elseler else ifler hangisinin compiler anlayamiyor olabilir.
bir denim bakim yeniden hocam onceden denedim ancak yinede yazdiriordu sanirim ben bir yerde yalnis yapiorum
-
package org.thejava.sort;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class App
{
public static void main( String[] args )
{
java.util.Scanner kb = new java.util.Scanner (System.in) ;
System.out.print(" 1. sayiyi giriniz : ");
int num1 = kb.nextInt ();
System.out.print(" 2. sayiyi giriniz : ");
int num2 = kb.nextInt ();
System.out.print(" 3. sayiyi giriniz : ");
int num3= kb.nextInt ();
kb.close();
List<Integer> nums = new ArrayList<Integer>();
nums.add(num1);
nums.add(num2);
nums.add(num3);
Collections.sort(nums);
System.out.println(nums);
}
}javaya yeni başlıyorsan eğer collections sınıfını kesinlikle incele hacı.