الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Occurrences Of Each Digit In A String

بدأه RRR في 5 مارس 2008 · 3 رد · 1,086 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

يا جماعة حد يساعدنا في ايجاد المشكلة

لقد قمت بكتابة الكود الذي في الاخر وهو لاحصاء عدد كل رقم من 1 الى 9 يقوم المستخدم بادخالها عن طريق سترنج

والمهم بعد كتابة البرنامج ضغطت على الكمبايل فقال ان العملية تمت (اي لا يوجد اخطاء), ولكن عندما ضغطت على الرن لم يعمل البرنامج فماذا تكون المشكلة؟

هل المشكلة في البرنامج نفسه ام في الكود ام في ماذا

مع العلم ان صيغة السؤال هكذا

Write a method that counts the occurrences of each digit in a string using the following header:

public static int[] count(String s)

The method counts how many times a digit appears in the string. The return value is an array of ten elements, each of which holds the count for a digit. For example, after executing http://' target="_blank">int[] counts = count("12203AB3"), counts[0] is 1, counts[1] is 1, counts[2] is 2, counts[3] is 2.

والكود الذي قمت بكتابته هو

import javax.swing.*;
public class X{
 public static void main (String[] args){
  String s=JOptionPane.showInputDialog("Inter the string :");
  int[]counts= count(s);

  String output="";

  for (int i=0;i<counts.length;i++){
  if(counts!=0)
  output+="The num ("+ i +") is appears  "+ counts+ ((counts==1) ? "  time\n":"  times\n");
  }

  JOptionPane.showMessageDialog(null,output);
 }


 public static int[] count(String s){
  int[]counts=new int[10];

  for(int i=0;i<s.length();i++){
   if(Character.isDigit(s.charAt(i)))
   counts[s.charAt(i)]++;
  }
  return counts;
 }
}
#2

يبدو أنك قررت أن تقوم بعمل فئة String من جديد

بالنسبة للمشكلة التي واجهتك فهي تكمن في

counts[s.charAt(i)]++;

لا تظن أنك إذا حصلت على الحرف فأنتا تستطيع أن تستخدمه بالطريقة السابقة

لأنك عندما تحول الحرف إلى int ستحصل على ASCII الخاص به

لهذا فأنت ستحتاج إلى عمل دالة تقوم تأخذ هذه الشيفرة وترجعها إلى الحرف الأصلي

أنا عملت حل مؤقت لك

لكن بما أني أتوقع أن العمل مطلوب منك بدون استخدام دوال String

فاتبع طريقة الدالة

	public static int[] count(String s){
		int[]counts=new int[10];
		for(int i=0;i<s.length();i++){
			if(Character.isDigit(s.charAt(i))){
				int digit=Integer.parseInt(s.substring(i,i+1));
				counts[digit]++;
			}
		}
		return counts;
	}

الله معك

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

بصراحة انا احببت الString , وطريقتك في الحل صحيحة.

فاقدم لك كل الشكر , والحمد لله اني وجدت شخصا يساعدني في هذا العمل،

انا ايضا استوعبت شرحك الوافي ولم يخطر على بالي

اقتباس
لأنك عندما تحول الحرف إلى int ستحصل على ASCII الخاص به

لهذا فأنت ستحتاج إلى عمل دالة تقوم تأخذ هذه الشيفرة وترجعها إلى الحرف الأصلي

بعد اذنك عندي سؤال

انت لماذا استخدمت جملة

				int digit=Integer.parseInt(s.substring(i,i+1));

ولم تستخدم

				int digit=Integer.parseInt(s.charAt(i));

مع جزيل الشكر

تحياتي

الله يوفقك

#4
s.charAt(i)

ترجع حرف char

بينما

s.substring(i,i+1)

ترجع جملة String

بالنسبة للدالة parseint فهي تأخذ جملة

بالنسبة للمساعدة يفترض أن أشكرك أنا

على العموم خذها مني حكمة

إن أردت أن تتعلم أي شيء بقوة

أو أردت أن تعلم خافاياه فقم بشرحه

الله معكم

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة