سؤال

أنا عالق في كتابة تكرار Word في سلسلة.حصلت على بعض النصائح (في ملاحظات المهمة) لاستخدامها وهي CompareToIgnoreCase.لذلك حاولت شيئًا مثل هذا:

splitwords = StringCont.split("\\s");
for(int i=0; i<splitwords.length; i++)
{
    if(splitwords[1].compareToIgnoreCase(splitwords[i]) == 0)
        splitcount++;
}

هذا بالطبع ما يمكنني فعله وربما بطريقة سيئة.عندما أقوم بتشغيل الكود، أخرج أحيانًا من استثناء المصفوفة وأحيانًا يتم تشغيله.ما هو مفقود هو:قم بمراجعة جميع الكلمات والتحقق منها وتخطي الكلمات التي تم حسابها بالفعل.سأكون سعيدًا بالحصول على أي مساعدة في هذا الشأن حتى أتمكن من المضي قدمًا وفهم كيفية ترميزه.شكرًا لك :)

يحرر:يبدو أنني لم أشرح المشكلة بشكل واضح بما فيه الكفاية، ولكنني حصلت على إجابة لطيفة حول كائن الخريطة الذي يجمع بسهولة ما أحتاج إليه.لم أكن أعرف عن الخريطة.حسنًا، كنت أحاول العثور على عدد المرات التي تم فيها العثور على كل كلمة معينة في السلسلة.

التانغين:يجب أن تعني أخذ الكلمة الأولى (حيث تكون المسافة البيضاء الأولى) Splitwords[1] ومقارنتها بجميع الكلمات الأخرى في سلسلة Splitwords[i] وإذا كانت 0 (يساوي)، فقم بحساب ++.

إيسكو:هناك بالفعل مسافات بيضاء كما في الجملة.ولكن لا يزال لدي هذا الاستثناء.لا أعرف لماذا من خلال.

هل كانت مفيدة؟

المحلول

قم بتخزين الكلمات وأعدادها في ملف Map.

String[] words = string.toLowerCase().split("\\s+");
Map<String, Integer> wordCounts = new HashMap<String, Integer>();

for (String word : words) {
    Integer count = wordCounts.get(word);
    if (count == null) {
        count = 0;
    }
    wordCounts.put(word, count + 1);
}

لاحظ أنني اتصلت toLowerCase() قبل split() كما يبدو أنك تريد أن يكون لديك حساسية لحالة الأحرف.

نصائح أخرى

هل تبحث عن وقوع <م> معين كلمة في الجملة أو عدد الكلمات المتراكمة من كل الكلمات في الجملة؟ واستنادا إلى نموذج التعليمات البرمجية الخاصة بك أتوقع السابق ولكن تفسيركم يجعلني أفكر في هذا الأخير.

في أي حال، شيء واضح: إذا لم تكن هناك أي الفراغات في سلسلة المدخلات، String#split() بإرجاع صفيف يحتوي على عنصر واحد بالضبط - السلسلة الأصلية نفسها. منذ أدلة المصفوفة تبدأ من الصفر، أن splitwords[1] يسبب ArrayIndexOutOfBoundsException لأن سلسلة الوحيدة المتاحة هي في مؤشر [0].

يمكنك استخدام مجموعة وتخزين كل كلمة فيها وفي النهاية الحصول على حجم المجموعة.

سوف تحصل على عدد الكلمات المختلفة ليس عدد الكلمة بالطبع.

إذا كنت تريد أن العد كلمة قوع، يجب عليك استخدام HashMap<String, Integer>. هناك يمكنك تخزين عداد لكل كلمة تم العثور عليها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top