Arama butonu
Bu konudaki kullanıcılar: 1 misafir
13
Cevap
5118
Tıklama
0
Öne Çıkarma
ANDROİD SÖZLÜK YAPIMI.ARKADAŞLAR ÇOK ACİL!!!
C
12 yıl
Er
Konu Sahibi

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;
}
}}

});

}

DH forumlarında vakit geçirmekten keyif alıyor gibisin ancak giriş yapmadığını görüyoruz.

Üye olduğunda özel mesaj gönderebilir, beğendiğin konuları favorilerine ekleyip takibe alabilir ve daha önce gezdiğin konulara hızlıca erişebilirsin.

Üye Ol Şimdi Değil





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

D
12 yıl
Er

 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 >

Ö
12 yıl
Yüzbaşı

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 >
Bu mesaja 1 cevap geldi.
G
12 yıl
Yarbay

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.


Bu mesaja 2 cevap geldi.
Ö
12 yıl
Yüzbaşı

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)


Bu mesaja 1 cevap geldi.
G
12 yıl
Yarbay

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.


Bu mesaja 1 cevap geldi.
Ö
12 yıl
Yüzbaşı

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.



P
12 yıl
Çavuş

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?


Bu mesaja 2 cevap geldi.
Ö
12 yıl
Yüzbaşı

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...



G
12 yıl
Yarbay

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.


Bu mesaja 1 cevap geldi.
P
12 yıl
Çavuş

 
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ı ?


Bu mesaja 2 cevap geldi.
Ö
12 yıl
Yüzbaşı

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.



G
12 yıl
Yarbay

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.



K
11 yıl
Çavuş

Android sözlük yapıcam ilk kodlamalar nasıl olacak bir yardım eder misiniz? Eclipse programı var bende



DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.