[Çözüldü] Java HashTable Kullanırken bir sorun yaşıyorum.

Başlatan garbagecollector, 13 Aralık 2016 - 23:28:57

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

garbagecollector

Merhabalar

Arkadaşlar bir ödevim var. Ancak bir sorun yaşıyorum. Öncelikle size kodları atayım.

Urunler.class kodları


package veriyapilari;

public class Urunler {

public String barkod;
public String adi;
public int adet;
public float fiyat;

     public Urunler(String barkod , String adi , int adet , float fiyat){
this.barkod = barkod;
this.adi = adi;
this.adet = adet;
this.fiyat = fiyat;

     }

}




StokTakib.class kodları

package veriyapilari;

import java.util.Hashtable;
import java.util.Scanner;
import java.util.Iterator;
import java.util.Collection;


//BARKOD NO , ÜRÜN ADI , STOK ADEDİ , MİNİMUM ALARM ADEDİ

public class StokTakib {
public static void main(String[] args){

      Hashtable stk = new Hashtable(); //barkod ile ürün adını alacağımız hash tablemız
      Hashtable stkadt = new Hashtable(); //ürün adedi ile ürün alarm adedini alacağımız hash tablemız
     
      Urunler bakkal  = new Urunler("141816044" , "Burak" , 15 , 150);
      Urunler bakkal2  = new Urunler("141816045" , "Burak2" , 150 , 1500);
     
      stk.put(bakkal.barkod, bakkal.adi);
      stkadt.put(bakkal.adet, bakkal.fiyat);
     
      stk.put(bakkal2.barkod, bakkal2.adi);
      stkadt.put(bakkal2.adet, bakkal2.fiyat);
     
      Scanner klavye = new Scanner(System.in);
     
      int i = 0;
      String bark;
      String ad;
      int adet;
      float fiyat;
      int alarm_siniri;
      int kere;
      int secim;
      char cevap = 'h';
 
      System.out.printf("\t\t%s","Merhaba Stok takip programını kullanmaktasınız...\n");
      do{
     
      System.out.printf("%s\n","Lütfen yapmak istediğiniz işlemi seçiniz.");
      System.out.printf("\n%s\n%s\n%s\n%s\n%s\n\n","1 . Ürün eklemek için 1 ' e basınız.","2 . Ürün silmek için 2 ' ye basınız.",
                "3 . Herhangi bir ürünün bilgilerini listelemek için 3 ' e basınız.","4 . Tüm ürünlerin dökümüne ulaşmak için 4 ' e basınız.",
                "5 . Bir ürünün tanımını veya fiyatını güncellemek için 5' e basınız.");
     
      System.out.println("Seçiminizi giriniz : ");
      secim = klavye.nextInt();
         
          Collection barkodlar = stk.keySet();
          Iterator it = barkodlar.iterator();
         
          Collection adlar = stk.values();
          Iterator ittir = adlar.iterator();
         
          Collection adetler = stkadt.keySet();
          Iterator ittirme = adetler.iterator();
     
         
      switch(secim){
      case 1 :   
     
     
             
                System.out.println("\n\nKaç adet ürün eklemek istiyorsunuz ?");
  kere = klavye.nextInt();
    i=0;
    do{
   
    System.out.println("Stoka eklenecek ürünün barkod nosunu giriniz : ");
    bark=klavye.next();
   
    System.out.println("Stoka eklenecek ürünün adını giriniz : ");
    ad=klavye.next();
   
    System.out.println("Stoka eklenecek ürünün adetini giriniz : ");
    adet=klavye.nextInt();
   
    System.out.println("Stoka eklenecek ürünün fiyatını giriniz : ");
    fiyat=klavye.nextFloat();
   
    System.out.println("Ürününüz başarıyla eklenmiştir ... \n\n");
 
    Urunler bakkal1  = new Urunler(bark , ad , adet , fiyat);
   
    stk.put(bakkal1.barkod, bakkal1.adi);
    stkadt.put(bakkal1.adet,bakkal1.fiyat);
       
    i++; 
   
    }while(i<kere);  break;

      case 2 : 
     
   
     
                String sil;
                System.out.println("\n\nSilmek istediğiniz ürünün barkod nosunu giriniz : ");
                sil = klavye.next();
                barkodlar.remove(sil); break;
               
      case 4 :   
   
               
        System.out.printf("%s\t\t%s\t%s\n","ürün barkodu","ürün adı","ürün adedi\n");
         
        while (it.hasNext()){
      System.out.printf(it.next()+"\t\t"+ittir.next()+"\t\t"+ittirme.next()+"\n\n"); } break;
               
                 
     
      }
     
      System.out.println("\n\nDevam etmek istiyor musunuz ? (e/h) ");
                              cevap = klavye.next().charAt(0);

                          }while(cevap == 'e');
  }
}


Gördüğünüz üzere iki ayrı hashtable açmaktayım. stk hashtable'ına barkod ile ürün adını stkadt hashtable'na adet ile fiyat almaktayım. Ancak yazdırırken stk hashtable'ı sıralı bir şekilde yazdırılırken stkadt hashtable'ı malesef sırasız bir şekilde yazdırılmakta. Bu konuda biraz acemiyim . Yardımlarınızı bekliyorum.

devel0per

Veri yapılarını biraz daha iyi öğrenmenizi tavsiye ederim. Hashtable da verileri eklediğiniz sıra ile göstereceği garantisi yoktur.
Computer Engineer

garbagecollector

Alıntı yapılan: devel0per - 14 Aralık 2016 - 17:21:35
Veri yapılarını biraz daha iyi öğrenmenizi tavsiye ederim. Hashtable da verileri eklediğiniz sıra ile göstereceği garantisi yoktur.

Evet , çünkü kafayı yemek üzereyim  :D