Şimdi Ara

ANDROİD SÖZLÜK YAPIMI.ARKADAŞLAR ÇOK ACİL!!!

Bu Konudaki Kullanıcılar:
2 Misafir - 2 Masaüstü
5 sn
14
Cevap
0
Favori
5.085
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • ARKADAŞLAR ANDROİD DE SÖZLÜK PROGRAMI YAZMAYA ÇALIŞIYORUM. PROGRAM KODLARI HATA VERMİYOR ANCAK ÇALIŞTIRDIĞIMDA İŞLEM GÖRMÜYOR. YARDIM EDEBİLİRSENİZ SEVİNİRİM AŞAĞIDA PROGRAMIN KODLARI VAR

    public class MainActivity extends Activity {

    EditText kelime;
    TextView ad;
    String a;
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button ing =(Button)findViewById(R.id.ing);
    kelime = (EditText)findViewById(R.id.kelime);
    ad=(TextView)findViewById(R.id.ad);


    ing.setOnClickListener(new View.OnClickListener() {


    public void onClick(View v) {

    a=kelime.getText().toString();
    String[] turk = new String[]{"araba ", "ev ", "kitap ", "ağaç ", "çiçek ", "hayvan ", "kalem ", "bilgisayar "};
    String[] ing =new String[]{"car ", "home ", "book ", "tree ", "flower ", "animal ", "pencil ", "computer " };
    for (Integer i = 0; i < 8 ; i++)
    {
    if (a == ing)
    {
    ad.setText(turk);
    break;
    }
    }}

    });

    }



    < Bu mesaj bu kişi tarafından değiştirildi Copier1 -- 3 Haziran 2013; 23:24:36 >







  •  a == ing yerine a.equals(ing[i]) yapman gerkiyor



    < Bu mesaj bu kişi tarafından değiştirildi desperatero -- 4 Haziran 2013; 9:01:53 >
  • Android veya Java konusunda çok az bilginiz var sanırsam, çünkü yazdığınız kod hiç mantıklı değil. İki tane dizi var ve siz bu dizi içerisindeki verileri for döngüsü ile karşılaştırmaya çalışıyorsunuz. for döngüsü ile bu işlem yapılmaz çünkü dizi içerisinde birden fazla String değeri var ve sizin bu String değerlerini tek tek çekip karşılaştırmanız gerekiyor, ama bunu for döngüsü ile yapamazsınız. Çünkü for döngüsü sadece parantez içerisinde belirttiğiniz değeri arttırır yada eksiltir, yani her for bitişinde dizi içerindeki farklı bir String değeri gelmez. İkinci bir yanlış ise, kullanıcının yazdığı yazı ile ing dizisini karşılaştırıyorsunuz. ing bir dizidir, önce bu dizi içerisindeki Stringleri tek tek getirerek öyle karşılaştırma yaptırmanız gerekiyor. Ayrıca karşılaştırma yaptıktan sonra direk turk dizisini yazdırmaya çalışmışsınız bu şekilde bir kullanım söz konusu olamaz, dediğim gibi turk bir dizidir.

    Sorunun çözümüne gelince ben javada şöyle bir çözüm yolu ürettim, sende android'e göre kullanırsın bunu:

    NOT: Direk kopyala yapıştır yaparak alma ilk önce kodları oku ne yapmak istediğimi anla ondan sonra bakmadan kendin yapmaya çalış, yoksa kopyala yapıştır ile bi'şey öğrenemezsin.

    Farklı bir class oluşturun Kelime.java adında ve kodları şöyle olsun;
     
    public class Kelime {
    public String Tr; // Türkçe kelime
    public String En; // İngilizce kelime

    public Kelime(String tr,String en)
    {
    this.Tr = tr; //parametre içerisindeki tr değeri class içerisindeki Tr değişkenine aktarılıyor.
    this.En = en; //parametre içerisindeki en değeri class içerisindeki En değişkenine aktarılıyor.
    }
    }


    Daha sonra bu kelime class'ını şu şekilde kullanabilirsiniz:
     
    List<Kelime> kelimeler = new ArrayList<Kelime>(); //Daha önce oluşturduğumuz kelime class'ından bir Liste oluşturuyoruz ve ismi "kelimeler"

    kelimeler.add(new Kelime("Araba","Car")); // daha sonra kelimeler listemize kelimelerimizi ekliyoruz(bu kullanım Kelime.java dosyasındaki 5.satırı çağırır)
    kelimeler.add(new Kelime("Ev","Home"));// aynısı
    kelimeler.add(new Kelime("Kitap","Book"));// aynısı
    //....

    String text = [buraya kullanıcının girdiği yazı TextView'dan getirilecek]

    for(Kelime k : kelimeler) // for döngüsünü foreach şeklinde kullanıyoruz ve tek tek kelimeler listemizdeki elemanlarımızı getiriyoruz
    {
    if(text.toString().equals(k.En)) // kullanıcının yazdığı yazı eğer bizim kelimeler listemizdeki elemanın En değeriyle uyuşuyorsa.....
    {
    //Burda istediğin TextView'e kelimenin türkçesini yazdırabilirsin. ("ad.setText(k.Tr);" şeklinde)
    }
    }


    Dediğim gibi bunu android sistemine göre düzenlemen gerek, o kısımda sana kalıyor artık her şeyi ben yaparsam sen bi'şey öğrenemezsin.



    < Bu mesaj bu kişi tarafından değiştirildi özgür beyin -- 4 Haziran 2013; 9:39:46 >




  • quote:

    Orijinalden alıntı: özgür beyin

    Android veya Java konusunda çok az bilginiz var sanırsam, çünkü yazdığınız kod hiç mantıklı değil. İki tane dizi var ve siz bu dizi içerisindeki verileri for döngüsü ile karşılaştırmaya çalışıyorsunuz. for döngüsü ile bu işlem yapılmaz çünkü dizi içerisinde birden fazla String değeri var ve sizin bu String değerlerini tek tek çekip karşılaştırmanız gerekiyor, ama bunu for döngüsü ile yapamazsınız. Çünkü for döngüsü sadece parantez içerisinde belirttiğiniz değeri arttırır yada eksiltir, yani her for bitişinde dizi içerindeki farklı bir String değeri gelmez. İkinci bir yanlış ise, kullanıcının yazdığı yazı ile ing dizisini karşılaştırıyorsunuz. ing bir dizidir, önce bu dizi içerisindeki Stringleri tek tek getirerek öyle karşılaştırma yaptırmanız gerekiyor. Ayrıca karşılaştırma yaptıktan sonra direk turk dizisini yazdırmaya çalışmışsınız bu şekilde bir kullanım söz konusu olamaz, dediğim gibi turk bir dizidir.


    Aslında arkadaş ing[i ] ve turk[i ] yazmak istemiş ama onlar çıkmamış. Tek hatası karşılaştırmayı == ile yapmak.

    Senin yazdığın kodun da onunkinden pek farkı yok. Yine döngü ile aramak zorundasın. İsmi zaten "dictionary" olan bir veri yapısı var, javada HashMap olarak geçer. Onu kullanın.

    HashMap<String, String> sozluk = new HashMap<String, String>();
    sozluk.put("Ev", "Home");

    String anlami = sozluk.get("Ev");

    equals metodunu override ederek startsWith() şeklinde de yapabilirsiniz.




  • quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: özgür beyin

    Android veya Java konusunda çok az bilginiz var sanırsam, çünkü yazdığınız kod hiç mantıklı değil. İki tane dizi var ve siz bu dizi içerisindeki verileri for döngüsü ile karşılaştırmaya çalışıyorsunuz. for döngüsü ile bu işlem yapılmaz çünkü dizi içerisinde birden fazla String değeri var ve sizin bu String değerlerini tek tek çekip karşılaştırmanız gerekiyor, ama bunu for döngüsü ile yapamazsınız. Çünkü for döngüsü sadece parantez içerisinde belirttiğiniz değeri arttırır yada eksiltir, yani her for bitişinde dizi içerindeki farklı bir String değeri gelmez. İkinci bir yanlış ise, kullanıcının yazdığı yazı ile ing dizisini karşılaştırıyorsunuz. ing bir dizidir, önce bu dizi içerisindeki Stringleri tek tek getirerek öyle karşılaştırma yaptırmanız gerekiyor. Ayrıca karşılaştırma yaptıktan sonra direk turk dizisini yazdırmaya çalışmışsınız bu şekilde bir kullanım söz konusu olamaz, dediğim gibi turk bir dizidir.


    Aslında arkadaş ing[i ] ve turk[i ] yazmak istemiş ama onlar çıkmamış. Tek hatası karşılaştırmayı == ile yapmak.

    Senin yazdığın kodun da onunkinden pek farkı yok. Yine döngü ile aramak zorundasın. İsmi zaten "dictionary" olan bir veri yapısı var, javada HashMap olarak geçer. Onu kullanın.

    HashMap<String, String> sozluk = new HashMap<String, String>();
    sozluk.put("Ev", "Home");

    String anlami = sozluk.get("Ev");

    equals metodunu override ederek startsWith() şeklinde de yapabilirsiniz.

    HashMap veri yapısını bilmiyordum bilgilendirdiğiniz için teşekkürler hocam. Yinede yazdığım kod, kodlama düzeni açılışından daha düzenli bir proje elde etmemizi sağlar değil mi hocam? yada gereksiz kodlama mı yapmış olurum? (HashMap kullanmadığımızı varsayaraksak)




  • quote:

    Orijinalden alıntı: özgür beyin

    HashMap veri yapısını bilmiyordum bilgilendirdiğiniz için teşekkürler hocam. Yinede yazdığım kod, kodlama düzeni açılışından daha düzenli bir proje elde etmemizi sağlar değil mi hocam? yada gereksiz kodlama mı yapmış olurum? (HashMap kullanmadığımızı varsayaraksak)

    Gereksiz değil, 2 tane paralel diziye göre daha iyi ve düzenli. Sonradan sözcük ekleme yapılmayacak ise ArrayList yerine normal dizi de olur.

    HashMap kod düzeni için değil de verimlilik için kullanılır, tek tek aramaya göre çok daha hızlıdır.
  • quote:

    Orijinalden alıntı: elektro_gadget

    quote:

    Orijinalden alıntı: özgür beyin

    HashMap veri yapısını bilmiyordum bilgilendirdiğiniz için teşekkürler hocam. Yinede yazdığım kod, kodlama düzeni açılışından daha düzenli bir proje elde etmemizi sağlar değil mi hocam? yada gereksiz kodlama mı yapmış olurum? (HashMap kullanmadığımızı varsayaraksak)

    Gereksiz değil, 2 tane paralel diziye göre daha iyi ve düzenli. Sonradan sözcük ekleme yapılmayacak ise ArrayList yerine normal dizi de olur.

    HashMap kod düzeni için değil de verimlilik için kullanılır, tek tek aramaya göre çok daha hızlıdır.

    Peki hocam bilgilendirdiğiniz için teşekkürler.




  • quote:

    Orijinalden alıntı: elektro_gadget


    Aslında arkadaş ing[i ] ve turk[i ] yazmak istemiş ama onlar çıkmamış. Tek hatası karşılaştırmayı == ile yapmak.

    Senin yazdığın kodun da onunkinden pek farkı yok. Yine döngü ile aramak zorundasın. İsmi zaten "dictionary" olan bir veri yapısı var, javada HashMap olarak geçer. Onu kullanın.

    HashMap<String, String> sozluk = new HashMap<String, String>();
    sozluk.put("Ev", "Home");

    String anlami = sozluk.get("Ev");

    equals metodunu override ederek startsWith() şeklinde de yapabilirsiniz.

    hocam hashmap te aynı key den olmasını istiyorum mesela ev in birden fazla ingilizce anlamı oabilir.bunu nasıl yapabiliriz?
  • quote:

    Orijinalden alıntı: pasa-torunu

    quote:

    Orijinalden alıntı: elektro_gadget


    Aslında arkadaş ing[i ] ve turk[i ] yazmak istemiş ama onlar çıkmamış. Tek hatası karşılaştırmayı == ile yapmak.

    Senin yazdığın kodun da onunkinden pek farkı yok. Yine döngü ile aramak zorundasın. İsmi zaten "dictionary" olan bir veri yapısı var, javada HashMap olarak geçer. Onu kullanın.

    HashMap<String, String> sozluk = new HashMap<String, String>();
    sozluk.put("Ev", "Home");

    String anlami = sozluk.get("Ev");

    equals metodunu override ederek startsWith() şeklinde de yapabilirsiniz.

    hocam hashmap te aynı key den olmasını istiyorum mesela ev in birden fazla ingilizce anlamı oabilir.bunu nasıl yapabiliriz?

    Merhaba,

    Ben şöyle bir senaryo geliştirdim. HashMap yapısını bir string birde ArrayList şeklinde string veriler alacak şekilde ayarladım ve buna göre kodlamasını yaptım. Kodlar şu şekilde;

     
    HashMap<String, ArrayList<String>> sozluk = new HashMap<String,ArrayList<String>>();

    ArrayList<String> evAnlamlari = new ArrayList<String>();
    evAnlamlari.add("Ev");
    evAnlamlari.add("2.Anlamı");
    evAnlamlari.add("3.Anlamı");

    sozluk.put("ev", evAnlamlari);

    ArrayList<String> anlamlar = sozluk.get("ev");

    for (String anlam: anlamlar) {
    System.out.print(anlam+"\n");
    }


    Kolay gelsin...




  • quote:

    Orijinalden alıntı: pasa-torunu

    hocam hashmap te aynı key den olmasını istiyorum mesela ev in birden fazla ingilizce anlamı oabilir.bunu nasıl yapabiliriz?

    özgür beyin in gösterdiği gibi yapabilirsin. Ayrıca get ile liste alındıktan sonra da listeye ekleme yapılabilir.
  •  
    import java.util.*;

    public class Sozluk2 {


    HashMap<String, ArrayList<String>> sozluk = new HashMap<String,ArrayList<String>>();

    ArrayList<String> kelimeAnlamlari = new ArrayList<String>();

    public void add(String kelime , String anlam){


    kelimeAnlamlari.add(anlam);
    sozluk.put(kelime, kelimeAnlamlari);
    }

    public void get(String kelime ){

    ArrayList<String> kelimeAnlamlar = sozluk.get(kelime);
    for (String anlam: kelimeAnlamlar) {
    System.out.print(anlam+"\n");
    }
    }
    public static void main(String[] args) {

    Sozluk2 szlk= new Sozluk2();

    szlk.add("ev","1.anlam");
    szlk.add("ev", "2.Anlam");

    szlk.get("ev");

    szlk.add("araba","1. araba anlam");
    szlk.add("araba", "2. araba anlam");

    szlk.get("araba");

    }

    }




    teşekkürler sizin dediğiniz gibi yaptım lakin herbir kelime için ayrı bir liste oluşturmak istiyorum. kodlarım bu şekilde hatamın ne olduğu konusunda fikriniz var mı ?




  • quote:

    Orijinalden alıntı: pasa-torunu

     
    import java.util.*;

    public class Sozluk2 {


    HashMap<String, ArrayList<String>> sozluk = new HashMap<String,ArrayList<String>>();

    ArrayList<String> kelimeAnlamlari = new ArrayList<String>();

    public void add(String kelime , String anlam){


    kelimeAnlamlari.add(anlam);
    sozluk.put(kelime, kelimeAnlamlari);
    }

    public void get(String kelime ){

    ArrayList<String> kelimeAnlamlar = sozluk.get(kelime);
    for (String anlam: kelimeAnlamlar) {
    System.out.print(anlam+"\n");
    }
    }
    public static void main(String[] args) {

    Sozluk2 szlk= new Sozluk2();

    szlk.add("ev","1.anlam");
    szlk.add("ev", "2.Anlam");

    szlk.get("ev");

    szlk.add("araba","1. araba anlam");
    szlk.add("araba", "2. araba anlam");

    szlk.get("araba");

    }

    }




    teşekkürler sizin dediğiniz gibi yaptım lakin herbir kelime için ayrı bir liste oluşturmak istiyorum. kodlarım bu şekilde hatamın ne olduğu konusunda fikriniz var mı ?

    Her kelime için ayrı ArrayList oluşturmanız gerekiyor hocam, benim senaryomda. İsterseniz o ArrayList'leri ayrı bir class içerisinde toplayın, daha düzenli bir kod ortamı elde etmiş olursunuz.




  • quote:

    Orijinalden alıntı: pasa-torunu

     
    import java.util.*;

    public class Sozluk2 {


    HashMap<String, ArrayList<String>> sozluk = new HashMap<String,ArrayList<String>>();

    ArrayList<String> kelimeAnlamlari = new ArrayList<String>();

    public void add(String kelime , String anlam){


    kelimeAnlamlari.add(anlam);
    sozluk.put(kelime, kelimeAnlamlari);
    }

    public void get(String kelime ){

    ArrayList<String> kelimeAnlamlar = sozluk.get(kelime);
    for (String anlam: kelimeAnlamlar) {
    System.out.print(anlam+"\n");
    }
    }
    public static void main(String[] args) {

    Sozluk2 szlk= new Sozluk2();

    szlk.add("ev","1.anlam");
    szlk.add("ev", "2.Anlam");

    szlk.get("ev");

    szlk.add("araba","1. araba anlam");
    szlk.add("araba", "2. araba anlam");

    szlk.get("araba");

    }

    }




    teşekkürler sizin dediğiniz gibi yaptım lakin herbir kelime için ayrı bir liste oluşturmak istiyorum. kodlarım bu şekilde hatamın ne olduğu konusunda fikriniz var mı ?

    add metodun hatalı. Şöyle olmalı;

    void add(String kelime, ArrayList<String> anlamlari)
    {
    sozluk.put(kelime, anlamlari);
    }

    Ayrıca o get metodunda print ile ekrana yazdırmak taşınabilirliği yok eder. Bence onu kaldır, yerine arraylist in kopyasını döndür.




  • Android sözlük yapıcam ilk kodlamalar nasıl olacak bir yardım eder misiniz? Eclipse programı var bende
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.