1. sayfa
a == ing yerine a.equals(ing[i]) yapman gerkiyor |
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;
Daha sonra bu kelime class'ını şu şekilde kullanabilirsiniz:
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. |
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) |
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. |
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;
Kolay gelsin... |
özgür beyin in gösterdiği gibi yapabilirsin. Ayrıca get ile liste alındıktan sonra da listeye ekleme yapılabilir. |
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. |
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 |
1. sayfa
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 Ol Şimdi DeğilÜ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.
< Bu mesaj bu kişi tarafından değiştirildi Copier1 -- 3 Haziran 2013; 23:24:36 >