Yeni Başladım.Break komutunun mantığını anlamadım

Bu başlık kilitlidir. Yeni mesajlar gönderilemez veya mevcut mesajlar düzenlenemez.
ZimDeath
26-07-2005, 14:35   |  #1  
OP Yeni Üye
Teşekkür Sayısı: 0
21 mesaj
Kayıt Tarihi:Kayıt: Kas 2004

Java'ya yeni başladım,chip workshop lar ile başladım ve elimde bi iki kaynak daha var...Size şunu sormak istiyorum :(workshop'ta olan bi prog.)

//*** menu.java ***//

   import javax.swing.*;
    public class menu
   {
       public static void main(String[] args)
      {
         boolean secim_flag=true;
         while(secim_flag)
         {
            String secim=JOptionPane.showInputDialog(null,"Bir Sayı Giriniz:(1,2,3,4)");
            int sayi=Integer.parseInt(secim);
            secim_flag=false;
         
            switch(sayi)
            {
               case 1:
                  JOptionPane.showMessageDialog(null,"Seçtiğiniz Sayı 1 (bir) dir.");
                  break; //buradaki breaklerden sonra 2nolu yere geliyor tamam ama aşağıdakinde...
               case 2:
                  JOptionPane.showMessageDialog(null,"Seçtiğiniz Sayı 2 (iki) dir.");
                  break;
               case 3:
                  JOptionPane.showMessageDialog(null,"Seçtiğiniz Sayı 3 (üç) tür.");
                  break;
               case 4:
                  JOptionPane.showMessageDialog(null,"Seçtiğiniz Sayı 4(dört) tür.");
                  break;
               default:
                  secim_flag=true;
                  JOptionPane.showMessageDialog(null,"Beklenenden Farklı Bir Sayı Girdiniz");
                  JOptionPane.showMessageDialog(null,"Sizi Kınıyorum...");
                  
                  break; //buradaki break'ten sonra 2nolu                yere gelmesi gerekmiyor mu?neden while döngüsünün başına geliyor??
                     
            }
         
         }
         System.exit(0); //2 nolu yer
      }
   }



benim anlayamadığım şey şu : break i kullandığım zaman içinde olduğu döngüyü bırakıp o dögüyü terkedip , döngünün bittiği yerden mi devam ediyo program??..Aslında yukarıda 1 seçildiğinde bile while döngüsünün başına geliyo program...ama başka bi örnekte direk döngünün sonuna gidiyordu...Kafam karıştı yardım ederseniz sevinirim...Şimdiden teşekkürler...

Eyüp Korkusuz
27-07-2005, 10:31   |  #2  
Yıllanmış Üye
Teşekkür Sayısı: 0
2,077 mesaj
Kayıt Tarihi:Kayıt: Eyl 2004

Break komutu dediğin gibi döngüyü terk etmesine yarar burada terk ederken de döngünü koşuluna göre bunu yapar örneğin döngünün şartında her seferinde 1 arttırması isteniyorsa break komutu ile koşul sağlanmazise 1 artmaz ve o kısmı es geçip bir sonraki işleme başlar.

Başka örneklerde direkt sona gitmesinin sebebi orada olan başka bir komuttur. Break ten sonra en son satırada yönlendirilmiş olabilir iki örneğide iyi incelemeni tavsiye ederim...

ZimDeath
28-07-2005, 00:18   |  #3  
OP Yeni Üye
Teşekkür Sayısı: 0
21 mesaj
Kayıt Tarihi:Kayıt: Kas 2004

aslında doğruyu söylemek gerekirse tam anlayamadım.Yani neye göre break komutunun işlevi değişiyo ya da değişmiyo mu?Mesela ;
//*** Şifre ***//
   import javax.swing.*;
    public class sifre
   {
       public static void main(String[] args)
      {
         String kontrol_isim="purak";
         String k_adi=JOptionPane.showInputDialog(null,"Lütfen Kullanıcı Adınızı Giriniz :");
         boolean x_flag=false;
         while(!k_adi.equals(kontrol_isim))
         {
            if(k_adi.equals("x"))
            {
               JOptionPane.showMessageDialog(null,"İşlem Sonlandırılıyor...");
               x_flag=true;
              break;//buradan sonra 2nolu yere geliyor
            }
            k_adi=JOptionPane.showInputDialog(null,"Girdiğiniz Kullanıcı Adı Yanlış,Lütfen Tekrar Giriniz :");
         }//2nolu yer
         if(x_flag)
         {
            JOptionPane.showMessageDialog(null,"Hoşcakalın!");
         }
         else
         {
            JOptionPane.showMessageDialog(null,"Merhaba "+k_adi);
         
         }
         System.exit(0);
      }
   }



şimdi benim break komutunu gördüğüm ikinci örnek bu ve bununla ilk yazdığımı karşılaştırdığım için kafam karıştı,ikisi arasındaki farkı nasıl algılayacağım??sorum burda ,belki bunlara kafamı takmasam biraz daha devam etsem halledebilir miyim??(bende öyle bir huy var da birşeyi tam halledip deavm etmek istiyorum)

ZimDeath
29-07-2005, 15:56   |  #4  
OP Yeni Üye
Teşekkür Sayısı: 0
21 mesaj
Kayıt Tarihi:Kayıt: Kas 2004

tamam anladım arkadaşlar,switch deki break switch'i sonlandırıyomuş ordaki görevi o imiş...diğer durumlarda ise döngüyü durduruyo...yardımlarınız için teşekkürler..

xmenn
26-08-2005, 17:44   |  #5  
Taze Üye
Teşekkür Sayısı: 0
1 mesaj
Kayıt Tarihi:Kayıt: Ağu 2005


Merhaba arkadasim
gerci 10 günlük yani bi java ögrencisiyim burdan bi seyler ögrenirim diye girdim ve senin mesajini gördüm,anladigim kadariyla eger 1,2,3,4 ün disinda bir sayi girildiginde program iki mesajdan sonra otomatik olarak kapanmasi gerekiyor iste bu kodlari evde bir defa göz atmakla yaptigin hatayi buldum ve command ile belirledim,iyi calismalar,bu arada 10 günlük bi javaci olmama ragmen bi bakista hatayi bulmam beni cok sevindirdi bilgi alis verisi icin xmenn@hotmail.com
ve kamerali chat sesli chat canli radyo v.s icin benim kendim hazirladigim siteye sizi davet ediyorum www.sevgi-yolu.cjb.net

alıntı:
Gönderen : ZimDeath

Java'ya yeni başladım,chip workshop lar ile başladım ve elimde bi iki kaynak daha var...Size şunu sormak istiyorum :(workshop'ta olan bi prog.)

//*** menu.java ***//

   import javax.swing.*;
    public class menu
   {
       public static void main(String[] args)
      {
         boolean secim_flag=true;
         while(secim_flag)
         {
            String secim=JOptionPane.showInputDialog(null,"Bir Sayı Giriniz:(1,2,3,4)");
            int sayi=Integer.parseInt(secim);
            secim_flag=false;
         
            switch(sayi)
            {
               case 1:
                  JOptionPane.showMessageDialog(null,"Seçtiğiniz Sayı 1 (bir) dir.");
                  break; //buradaki breaklerden sonra 2nolu yere geliyor tamam ama aşağıdakinde...
               case 2:
                  JOptionPane.showMessageDialog(null,"Seçtiğiniz Sayı 2 (iki) dir.");
                  break;
               case 3:
                  JOptionPane.showMessageDialog(null,"Seçtiğiniz Sayı 3 (üç) tür.");
                  break;
               case 4:
                  JOptionPane.showMessageDialog(null,"Seçtiğiniz Sayı 4(dört) tür.");
                  break;
               default:
                  secim_flag=true;//yapmaniz gereken sey burayi false yapmak                  JOptionPane.showMessageDialog(null,"Beklenenden Farklı Bir Sayı Girdiniz");
                  JOptionPane.showMessageDialog(null,"Sizi Kınıyorum...");
                  
                  break; //buradaki break'ten sonra 2nolu                yere gelmesi gerekmiyor mu?neden while döngüsünün başına geliyor??
                     
            }
         
         }
         System.exit(0); //2 nolu yer
      }
   }



benim anlayamadığım şey şu : break i kullandığım zaman içinde olduğu döngüyü bırakıp o dögüyü terkedip , döngünün bittiği yerden mi devam ediyo program??..Aslında yukarıda 1 seçildiğinde bile while döngüsünün başına geliyo program...ama başka bi örnekte direk döngünün sonuna gidiyordu...Kafam karıştı yardım ederseniz sevinirim...Şimdiden teşekkürler...

ZimDeath
29-08-2005, 16:02   |  #6  
OP Yeni Üye
Teşekkür Sayısı: 0
21 mesaj
Kayıt Tarihi:Kayıt: Kas 2004

Öncelikle ilgilendiğin için teşekkür ederim xmenn ve mail adresini aldım(bilmiyorum msn mi kullanıyorsun, maglor_carnesir@hotmail.com benimki)...Neyse şimdi benim yazdığım kodda hata yok,ben mantığını kavrayamadığım break komutunun işlevi hakkında soru sormuştum ve şuan anladım artık...Benim yazdığım kodda(Chip Workshoplarda verilen) istenilen sayılardan farklı bir değer girildiğinde iki mesaj veriliyor ve tekrar numara girilmesi isteniyor,ama senin yazdığın kod için de yanlış denilemez sadece seninkinde istem dışı bir rakam girildiğinde 2 mesaj veriliyor ve program sonlanıyor...Yani ikiside doğru sadece isteklerimiz farklı...

Break komutu ile ilgili olarak da;break komutu döngüyü sonlandırıyor ve burada while döngüsünü sonlandırılmasını bekleniyor(ben beklemiştim :))fakat buradaki break komutunun işlevi switch komutunu sonlandırmak ve ona özgü bir şey bu, while ile alakası yok...Mesela breaklerden bazılarını çıkararak anlatmak istediğim şeyi anlayabilirsiniz...1,2,3,4 den biri seçildiği ya da farklı bir sayı girildiğinde istenilen yere yönleniyor program ve sonra break ile switch in bitiş yerine geliyor, secim_flag false olduğu içinde while döngüsüne tekrar başlandığında while döngüsünün içine değil dışına yönleniyor ama default da ise biz secim_flag ı true yapıyoruz ki switch sonlanıp tekrar while döngüsünün başına gelindiği zaman while ın içine girs ve tekrar bizden değer istesin...

umarım yardımcı olabilmişimdir,sevgiler...