Evet arkadaşlar, bugün yapacağımız örnek başlıkta belirtildiği gibi girilen String bir ifadenin ascii kod karşılıklarının toplamı olacak.
Bunun için klavyeden giriş için Scanner nesnesini çağıracağız. Gireceğimiz string cümlede boşlukları algılaması için ise Scanner nesnesinin nextline() fonksiyonunu kullanacağız. Ayrıca ilk yapılacak olan yolda char dizisine atayarak yani getChars fonksiyonunu kullanarak, ikinci yolda ise charAt() fonnksiyonunu kullanarak yapacağız.
Öncelikle kullanacağımız metodundan bahsedelim. Metodun üstüne tıklayarak özelliğini görebilirsiniz.
getChars() Metodu
Kaynak dizinin başlangıç değeri,
Kaynak dizinin bitiş değeri (dizinin uzunluğu),
Hedef dizinin adı ,
Hedef dizinin başlangıç noktasıdır.
Metotun kullanımı stringDegiskenAdi.getChars(param1, param2, param3, param4); şeklindedir.
public static void asciToplam(String str){
char [] dizi = new char[str.length()];
str.getChars(0, str.length(), dizi, 0);
int toplam = 0;
int uzunluk = dizi.length;
for (int i = 0; i < uzunluk; i++) {
toplam = toplam + dizi[i];
}
System.out.println("Toplam Asci toplam : "+toplam);
}
[/java]
Recursive Hali
[java] //Recursive Halipublic static int recursiveAsciToplam(String str, int str_uzunluk, int baslangic_index){
if(str_uzunluk != baslangic_index){
return str.charAt(baslangic_index) + recursiveAsciToplam(str, str_uzunluk, baslangic_index + 1);
}else{
return 0;
}
}
[/java]
Main fonksiyonu
[java] public static void main(String[] args) {// TODO Auto-generated method stub
Scanner scan = new Scanner(System.in);
System.out.print("lütfen birşey giriniz : ");
String ifade = scan.nextLine();
System.out.println("Kelimemiz : "+ifade);
System.out.println("Recursive Fonksiyona Göre : "+recursiveAsciToplam(ifade, ifade.length(), 0));
asciToplam(ifade);
}
[/java]
Gördüğünüz üzere recursive hali daha kısa ve daha kolaydır. Tabii bunda en üstteki metot da String ifadeyi char’a atmanın da etkisi olabilir. Ama yine de recursive metot kadar kısa olamazdı.
Ben çeşitlilik olması açısından getChars() metodunu kullandım. Siz yapıcaksanız charAt() fonksiyonu ile yapın.
Ama recursive yapmanın mantığını öğrenirseniz bu gibi fonksiyonlar daha az kod ve daha az zamanla çözülür. Her türlü sorularınızı istek soru çözümlerinizi yorum olarak yazabilirsiniz. Hepinizi iyi çalışmalar