Bildirim
Java Odevim String deki charlar
Daha Fazla
Bu Konudaki Kullanıcılar:
Daha Az
3 Misafir (1 Mobil) - 2 Masaüstü, 1 Mobil
Giriş
Mesaj
-
-
Bufferreader ı kullanıcaksın
2 tane array oluştur
1. arrayde alınan char ları tut
2. arrayde bu charların kaç kere kullanıldığını
önce okuturken ilk aldığı karakter i arrayin içinde eşitliğine baktır yani
if(exampleArray[a] == exmplChar){
exampleArrayNumber[a]+=1;
break;
}
else if (exampleArray[a]==null){ <=unutma char kullanıcaksın arrayini o yüzden .equals("") değil
exampleArray[a]=exmplChar;
exampleArrayNumber[a]=1;
şeklinde eşitleme sağlayabilirsin bastırırkende tek tek önce exampleArray i çağrırısn sonra da Number ı bastırırsın ufak bi if( ==null) ekleyerek boş kalan array leride bastırmamış olursun, kolay gelsin. -
Böyle bir kod yazdım fikir olsun diye;
package javaproject;
public class Main {
public void karakterSayaci(String str) {
if (str == null)
return;
String[] karakterDizisi = {"a","b","c","ç","d","e","f","g","ğ","h","ı","i","j","k","l","m","n","o","ö",
"p","q","r","s","ş","t","u","ü","v","w","x","y","z",
"0","1","2","3","4","5","6","7","8","9"}; //42 adet
int[] sayacDizisi = new int [42];
int sayac = 0;
for (int i = 0; i < str.length(); i++) {
char charKarakter = str.charAt(i);
String strKarakter = Character.toString(charKarakter);
for(int j=0;j<karakterDizisi.length;++j)
{
if (karakterDizisi[j].equals(strKarakter)||karakterDizisi[j].equals(strKarakter.toLowerCase()))
{
int l = sayacDizisi[j];
sayacDizisi[j]= l+1 ;
}
}
sayac++;
}
for (int k = 0; k < 42; k++) {
if (sayacDizisi[k] != 0)
System.out.println(sayacDizisi[k] + " adet " + karakterDizisi[k] );
}
}
public static void main(String[] args) {
new Main().karakterSayaci("aAiİıIoOöÖuUüÜ3");
}
}
< Bu mesaj bu kişi tarafından değiştirildi gergozen -- 1 Aralık 2010; 21:39:55 >
-
Saolun arkadaşlar cevaplar için ancak daha olmadı benim iş çünkü şöle bir durum var.
String word= jTextField1.getText(); // textden aldık bilgiyi "araba" yazssın
char[] charArray;
char[] charArray2; //2.array açsak
charArray = word.toCharArray(); // şeklinde dönüşümü yaptık
peki sade bir şekilde nasıl tüm bu karakterli 1 er tane olarak yeni bir diziye atıcaz
for(int i=0; charArray.length; i++) {
for(int j=0; charArray.length; j++){
if(charArray[j]!=charArray2){charArray2=charArray}
}
}
bunu bu mantıkta yapma şansımız yokmu nasıl olcak yada nerde yanlış var burda çalışmıyor bu şekilde -
word stringini neden diziye atıyorsun, ödev o şekilde mi ?
Yukarıdaki kodu derledim çalıştı (netbeans 6.9.1 ve jdk1.6.0_18).
< Bu mesaj bu kişi tarafından değiştirildi gergozen -- 1 Aralık 2010; 23:31:26 > -
çalıştımı nasıl yani tam olarak çalıştırdığın kodu bana yazarmsın.
word stringi char diziye atamadn nasıl tek tek karşılaştıabilirim? -
new Main().karakterSayaci("aAiİıIoOöÖuUüÜ3");
yerine
new Main().karakterSayaci("araba");
yazabilirsin
veya
new Main().karakterSayaci(word);
yöntem çok. kodu ise aşağıda tekrar veriyorum, bir değişiklikle;
package javaproject;
public class Main {
public void karakterSayaci(String str) {
if (str == null)
return;
String[] karakterDizisi = {"a","b","c","ç","d","e","f","g","ğ","h","ı","i","j","k","l","m","n","o","ö",
"p","q","r","s","ş","t","u","ü","v","w","x","y","z",
"0","1","2","3","4","5","6","7","8","9"}; //42 adet
int[] sayacDizisi = new int [42];
int sayac = 0;
for (int i = 0; i < str.length(); i++) {
char charKarakter = str.charAt(i);
String strKarakter = Character.toString(charKarakter);
for(int j=0;j<karakterDizisi.length;++j)
{
if (karakterDizisi[j].equals(strKarakter)||karakterDizisi[j].equals(strKarakter.toLowerCase()))
{
int l = sayacDizisi[j];
sayacDizisi[j]= l+1 ;
}
}
sayac++;
}
System.out.println(str + " içindeki harfler");
for (int k = 0; k < 42; k++) {
if (sayacDizisi[k] != 0)
System.out.println(sayacDizisi[k] + " adet " + karakterDizisi[k] );
}
}
public static void main(String[] args) {
new Main().karakterSayaci("Araba");
new Main().karakterSayaci("Ankara");
}
}
-
peki karakter dizisini elle yani
String[] karakterDizisi = {"a","b","c","ç","d","e","f","g","ğ","h","ı","i","j","k","l","m","n","o","ö",
"p","q","r","s","ş","t","u","ü","v","w","x","y","z",
"0","1","2","3","4","5","6","7","8","9"}; //42 adet
yukarıdaki olay olmadan programa otamatik olrak buldurma şansımız yokmu -
quote:
Orijinalden alıntı: OnlyHero
word stringi char diziye atamadn nasıl tek tek karşılaştıabilirim?
str.charAt(i); str strignindeki i'inci karakteri veriyor. böylece tek tek karakterler alıp karşılaştırabiliyorsun.
str.length() ile de str strignindeki karakter sayısını alıp döngünü onunla sınırlandırıyorsun. -
quote:
Orijinalden alıntı: OnlyHero
peki karakter dizisini elle yani
String[] karakterDizisi = {"a","b","c","ç","d","e","f","g","ğ","h","ı","i","j","k","l","m","n","o","ö",
"p","q","r","s","ş","t","u","ü","v","w","x","y","z",
"0","1","2","3","4","5","6","7","8","9"}; //42 adet
yukarıdaki olay olmadan programa otamatik olrak buldurma şansımız yokmu
var, tabi de uğraştırır. Önce diziye atar, sonra alfabetik sıralar, sonra (veya önce) rakam ve harf olmayanları ayırır (bunun için yine yukarıdaki gibi bir dizi oluşmalı bence, hem istediğin karakterleri de rahatça ayıklayabilirsin), sonra ilk karakteri değişken değeri olarak atar değerine 1 verir, ikinci ile karşılaştırırsın. aynı ise aynı değişkeni 1 artırır değişik karakter gelirse yeni bir değişken oluşturursun.
Tabi daha basit yöntei de olabilir, ama benim aklıma gelen en basit ve anlaşılır yöntem yukarıdaki... Sadece bir kaç gereksiz dönüştürme olabilir içinde.
İyi geceler...
< Bu mesaj bu kişi tarafından değiştirildi gergozen -- 1 Aralık 2010; 23:55:02 >
-
Saol dostum yarıdımın için,iyi geceler sana
Sayfa:
1
Ip işlemleri
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X
Bu mesaj IP'si ile atılan mesajları ara Bu kullanıcının son IP'si ile atılan mesajları ara Bu mesaj IP'si ile kullanıcı ara Bu kullanıcının son IP'si ile kullanıcı ara
KAPAT X