المساعدة - البحث - قائمة الأعضاء - التقويم
نسخة كاملة: كيف أحسب عدد مرات حدوث كل حرف داخل String بدون تكرار
برمجة - شبكات - كمبيوتر - منتديات الفريق العربي للبرمجة > منتديات لغات البرمجة العام > منتدى مبرمجي لغة جافا JAVA
محمد صلاح عبدالحميد
السلام عليكم ورحمة الله وبركاته أنا عملت كود يحسب عدد مرات حدوث كل حرف داخل string لكن لم أعرف كيف اتغلب على مشكلة لو وجدت حرف تم حسابه من قبل كيف أعرف وأيضا كيف أستقبل حرف وأزيد في عدد مراته الموجود عندي هذا هو الكود ارجو المساعدة
كود
import java.util.*;
public class Main {
  static Scanner console= new Scanner(System.in);
    public static void main(String[] args)
    {
    System.out.print("Please Enter aString ");
    System.out.println();
    String str =console.next();
    char[]third =str.toCharArray();
   for(int counter =0;counter<third.length;counter++)
   {   char letter= third[counter];
       int flage=0;
    for (int i=0; i<third.length; i++)
        {
        if (letter==third[i])  
    flage++;
        else continue;
    }
        
      
   }
        
    }
public static void counter (int x)
{
int []count= new int[x];
// this method to store the number of occurrences of each
//alphabetical letter in the string
}
public static void read (int x)
{
// this method should recive acharacter
// then update its the corresponding counter    
}
}
Malik Al-Boani
أخي محمد لم أفهم قصدك

هل تريد حساب عدد حروف الstring بدون أن يتكر الحرف مرتين مثلاً إذا كان النص mohammed تريده أن يعطيك 6

أم تريد حساب كل حرف كم تكرر داخل الstring

تحياتي
محمد صلاح عبدالحميد
جزاك الله خيرا أخي مالك على إهتمامك نعم أقصد إذا كان عندي نص وليكن adads
فأريد المخرج أن يكون حرف الa تكرر مرتين حرف الd تتكرر مرتين حرف الs تتكرر مرة واحدة وهكذا يحسب تكرار كل حرف من غير تكرار إذا وجد الحرف مرة أخرى
Wajdy Essam

قم بعمل مصفوفه من 26 خانه ، تمثل تكرار الحروف . وأجعل القيمه الأبتدائيه لكل العناصر صفر .

الأن عندما تجد الحرف الأول في النص ، قم بتحويل الحرف الى رقم وذلك بطرح 97 ( هنا جميع الأحرف تكون صغيره) ، خذ الرقم الناتج كIndex وأجمع عليه واحد . أستمر هكذا لبقيه الأحرف .

كود
public class Demo
{
    public static void main (String args[])
    {
        String str = "hello my firend";
        
        System.out.println("Number of Character is : " + str.length() );
        
        int array[] = new int[26];
        
        for (int i=0; i<26; i++)
            array[i] = 0;
            
        
        for (int i=0; i<str.length(); i++)
        {
            if ( str.charAt(i) == ' ' )
                continue;
            else
                array[str.charAt(i)-97]++;
        }
        
        for (int i=0; i<26; i++)
        {
            if ( array[i] == 0 )
                continue;
            else
                System.out.println( (char) (i+97 ) + " : " + array[i]);
        }
        
    }
}


طريقه أخرى ، وهي أيضا بعمل نفس المصفوفه من 26 خانه ، بعدها أبحث من بدايه النص الى النهايه وفي حال وجدت حرفين متشابهين قم بزياده الIndex بواحد .
محمد صلاح عبدالحميد
مشكور يأخي لكن كيف أعمل الmethod التي تسقبل حرف تتزود عدد مرات حدوثه بواحد
محمد صلاح عبدالحميد
للرفع
محمد صلاح عبدالحميد
أرجو شرح لماذا تم طرح97 وشكرا وكيف أستقبل حرف جديد وأزود عدد مرات حدوثه
العيافـي
جرب هذا ...

كود
    public static void main(String[]t){
        System.out.println(read("othman saad"));
    }
    
    public static String read(String text){
        TreeMap<Character, Integer> map=new TreeMap<Character, Integer>();
        for(char c:text.toCharArray()){
            if(c == ' ')continue;
            else if(map.containsKey(c))map.put(c, (1+map.get(c)));
            else map.put(c, 1);
        }
        StringBuffer result=new StringBuffer();
        Iterator<Character> it=map.keySet().iterator();
        while(it.hasNext()){
            char c=it.next();
            result.append(c).append(" : ").append(map.get(c)).append("\n");
        }
        return result.toString();
    }
محمد صلاح عبدالحميد
جزاك الله خيرا هلا شرحت هذا الكود
محمد صلاح عبدالحميد
ممكن طريقة أبسط ياإخوة
علاء الصالحي
إقتباس
قم بتحويل الحرف الى رقم وذلك بطرح 97 ( هنا جميع الأحرف تكون صغيره)

الأخ رومانسي يتكلم عن الترميز ASCII أول حرف فيهم هو حرف a وقيمته 97
أما لماذا قمنا بالطرح
لكي نتمكن من اللإضافة على المصفوفة المكونة من 26 موقع
أول موقع فيها للحرف a وآخر موقع للحرف z

أتمنى أن تكون الشيفرة واضحة
بالنسبة للشيفرة الخاصة بالأخ عناقي
فأنا لم أتعامل مع Map من قبل
لذا لا يمكنني شرحها
أتمنى لو يشرحها هوه
ربما نستفيد أيضاً

تحياتي
محمد صلاح عبدالحميد
جزاك الله خيرا على الإيضاح وبارك الله في جميع الإخوة الذين يساعدوا إخوانهم ويمدوا إليهم يد العون حفظكم الله جميعا
هذه "نسخة - خفيفة" من محتويات الرئيسية للإستعراض الكامل مع المزيد من الصور والخيارات الرجاء إضغط هنا.
Invision Power Board © 2001-2009 Invision Power Services, Inc.