Soru & Cevap

Bu Problem Basit Ama Hata Var. ...

22.09.2013 - 01:28

ÖRNEK 5 -  indexOf Fonksiyonu

 

import java.io.*;  

class stringuyg5{ publicstaticvoid main(String[] arg)

{  

String st1="anadolu";

int i; i=0;

System.out.println("KARAKTER"+" "+"INDEKSI");

for(i=0; i<=st1.length()-1; i++)

System.out.println(st1.charAt(i)+" "+st1.indexOf(st1.charAt(i)));

}

}

 

sorun şu ki ikinci "a" harfini aldığında neden "0" yazıyor "2" yazması lazım değilmidir.

 

Kendi ismimde de "e" harfini 1 olarak algılıyor

7 Görüntülenme

4 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

Profile picture for user msaritas
msaritas
18.03.2024 - 04:55

merhaba umarım yardımcı olmusturum

indexOf fonksiyonu, belirtilen karakterin ilk bulunduğu indeksi döndürür. Dolayısıyla, st1.indexOf(st1.charAt(i)) ifadesi her karakter için o karakterin ilk bulunduğu indeksi döndürecektir.

Ancak, sizin istediğinizin aksine, indexOf fonksiyonu karakterin herhangi bir yerde bulunduğu indeksi değil, ilk bulunduğu indeksi döndürür. Yani, ikinci "a" harfinin indeksi 0 değil, 2 olması gerekir, çünkü "a" harfi "anadolu" kelimesinde 0. ve 2. indekslerde bulunmaktadır.

Aynı şekilde, kendi isminizdeki "e" harfinin indeksi 1 olması doğru. "e" harfi "anadolu" kelimesinde 1. indekste bulunmaktadır.

Bu nedenle, kodunuzun çıktısı doğru. Ancak, eğer bir karakterin kaçıncı kez geçtiğini öğrenmek istiyorsanız, indexOf fonksiyonunu kullanmak yerine başka bir yaklaşım kullanmanız gerekebilir. Örneğin, her karakterin kaç kez geçtiğini saymak için bir sayaç kullanabilirsiniz.

picture-399-1379511904.jpg
halil
24.09.2013 - 10:14

@recep bu konunun anlatılma sebebi indexof fonksiyonun anlatılması. Dediğiniz örnekler for anlatımlarımızda yer almakta. Fonskiyonun biraz karmaşık olduğu dogrudur fakat array yapısının fonskiyonları bir okadar öneme sahip.

picture-3544-1379714296.jpg
recepdanis
22.09.2013 - 06:06

İşlem doğru dur fakat bu eğitim kodları

olması gereken 0 yreine iki kod doğru çalışır ama doğru yanıtı vermez. eğitim kod bolümünden o kodların bence

değiştirilmesi lazım. 

System.out.println(st1.charAt(i)+" "+st1.indexOf(st1.charAt(i))); yerine

System.out.println(st1.charAt(i)+" "+i); olması gerek.

picture-472-1375079047.jpg
mehmet.altiparmak
22.09.2013 - 10:56

merhaba recep,

indexOf fonksiyonu parametre olarak verdiğin karakterin string içerisinde geçtiği ilk index i döndürür. yazdığın kod doğru çalışıyor yani.