سؤال

السلام عليكم اخواني الكرام اريد الاستفسار كيف بيتم جمع عددين موجودين في textfield واحد يعني بيكون على هذا الشكل 

10 + 5 اريد عند النقر على زر يساوي ان يتم البحث في التيكست اذا كان موجود + يقوم بالجمع واذا كان موجود - يقوم بالطرح واذا كان موجود / يقوم بالتقسيم واذا كان موجود * يقوم بالضرب كيف يمكن عمل هذا يعني انا بدي عند الضغط على يساوي يبحث عن علامة الجمع + ويجيب الارقام الي قبليها ويحفضها في متغير وبعدين يجيب الارقام الي بعديها ويحفضها بمتغير اخر وبعدين يطبع كل جهة لوحدها يعني الجهة اليمين الي قبل علامة الجمع يطبعها على سطر والجهة اليسرى الي بعد علامة الجمع يطبعها بسطر اخر

اتمنى الاجابة على هذا السؤال

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

13 إجابة على هذا السؤال .

  • 0

بالفعل درست جافا قبل البدء في gui عن طريق دورات عبدالله عيد ولكنها لم تكن مكتملة

 

دورة الأخ عبد الله لا تُغطي حتى أساسيات الجافا، و إنما هي مُجرد مدخل للمبتدئين.

أنصحك يالقراءة من الكتب إن أردت الإحتراف.

 

 

لم اتمكن من جمع القيم لأن القيمتين الناتجات من الطباعة يتم تخزينهم في متغير واحد فلم استطع جمعهم اتمنى الافادة.

قمتُ بكتابة الكود التالي على عُجالة، أعتقد انه يؤدي المطلوب، إذا كانت لديك أي أسئلة فلا تتردد في طرحها لكن حاول أن تفهم الكود أولا :

import java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.NoSuchElementException;import java.util.StringTokenizer;import javax.swing.*;public class BasicCalculator extends JDialog implements ActionListener {    private Container container;    private JPanel topPanel, resultPanel;    private JTextField operation;    private JButton submit;    private JLabel result;    public BasicCalculator(String titre) {        setTitle(titre);        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);        initCompenents();        pack();        setLocationRelativeTo(null);        setResizable(false);    }    private void initCompenents() {        operation = new JTextField();        operation.setPreferredSize(new Dimension(150, 23));        submit = new JButton("Submit");        submit.addActionListener(this);        result = new JLabel("Ready");        result.setPreferredSize(new Dimension(200, 23));        topPanel = new JPanel();        topPanel.add(operation);        topPanel.add(submit);        resultPanel = new JPanel();        resultPanel.add(result);        container = this.getContentPane();        container.setLayout(new BorderLayout());        container.add(topPanel, BorderLayout.CENTER);        container.add(resultPanel, BorderLayout.SOUTH);    }    @Override    public void actionPerformed(ActionEvent e) {        if (e.getSource() == submit) {            String text = operation.getText();            char delimiter = '.';            for (int i = 0; i < text.length(); i++) {                if (text.charAt(i) == '+' || text.charAt(i) == '-'                        || text.charAt(i) == '*' || text.charAt(i) == '/') {                    delimiter = text.charAt(i);                    break;                }            }            if (delimiter == '.') {                return;            }            StringTokenizer stk = new StringTokenizer(text, String.valueOf(delimiter));            try {                float x = Float.parseFloat(stk.nextElement().toString());                float y = Float.parseFloat(stk.nextElement().toString());                double sum;                switch (delimiter) {                    case '+':                        sum = x + y;                        break;                    case '-':                        sum = x - y;                        break;                    case '*':                        sum = x * y;                        break;                    case '/':                        sum = x / y;                        break;                    default:                        return;                }                result.setText(x + " " + delimiter + " " + y + " = " + sum);            } catch (NoSuchElementException | NumberFormatException ex) {                result.setText("Incorrect input !");            }        }    }    public static void main(String args[]) {        BasicCalculator bc = new BasicCalculator("Basic Calculator");        bc.setVisible(true);    }}

صور من واجهة الحاسبة :

 

post-219439-0-94075300-1413493667.jpg

 

post-219439-0-26415000-1413493706.jpg

 

post-219439-0-53164100-1413493797.jpg

 

بالتوفيق.

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ماذا ستستفيد إن أعطيناك الحل جاهزاً ؟؟

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ماذا ستستفيد إن أعطيناك الحل جاهزاً ؟؟

قرأت حكمة مفيدة لأحد المبرمجين المحترفين تقول "لا تعتقد أن المبرمجين بمختلف مستوياتهم يحفظون كل شئ من دوال و كلاسات ، فببساطة كل مبرمج يعمل على برنامجه و أمامه الكثير من المصادر التي يقرأ منها كاكتب و المواقع و أدلة الإستخدام فلا تظن إنك الوحيد لأن المبرمج لا يستطيع العمل 100% دون إستخدام مصادر إلا في الأمور البسيطة" ، يا أخي أنا ملاحظ إنك تعلق على جميع مواضيع المساعدة بنفس الأسلوب تقريباً ، و سأطرح عليك سؤال و أرجو أن لا تسئ فهمي إذا كان أحدهم مبتدأ و أنجز جزء لا يستهان به في لغة برمجة ما ولا يعرف كل الكلاسات في اللغة  أو ماذا تفعل فماذا يفعل ليصبح محترف ؟ّ!

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ماذا ستستفيد إن أعطيناك الحل جاهزاً ؟؟

 

اخي سوف أستفيد كثير اي اني سوف اقوم بقرائة الكود وفهمه وتطبيقه هذا هو ما سوف استفيده اذا كنت بتعرف طريقة تطبيق هذا الكود اخبرني وشكرا

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

لا تعتقد أن المبرمجين بمختلف مستوياتهم يحفظون كل شئ من دوال و كلاسات

أخي الكريم، تقسيم البرمجة إلى قسمين : إما أن نعرف اسم الدالة التي تقوم بالعمل أو نبقى مكتوفي الأيدي، هذا التفكير غير صحيح.

المبرمج قد يقوم بكتابة دوال تقوم بغرض مُعين حتى و إن كانت موجودة في الـ JDK، ما يوجد في الـ JDK كتبه مُبرمجون أيضاً و قد تضطر أحيانا إلى كتابة دوال خاصة بك لتوفير أشياء لا تُوفرها المكتبة القياسية.

لكن المشكلة ليست في هذه النقطة، سؤال الأخ ليس صعبا بتلك الدرجة حتى يُفكر في كتابة و بناء دوال جديدة.

مُشكلة الأخ أنه لم يقرأ قوانين المنتدى :

يمكننا أن نساعدك، ولكن بعد أن ترينا محاولاتك في الحل والبحث عن حلول والمشاكل التي واجهتك.

على الأخ صاحب الموضوع أن يُحاول و يُرينا محاولته مهما كانت لأن تقديم الحلول على طريقة fast-food لن يُفيده.

 

 

 

بالتوفيق.

تم تعديل بواسطه Snack3r
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

اخي سوف أستفيد كثير اي اني سوف اقوم بقرائة الكود وفهمه وتطبيقه هذا هو ما سوف استفيده اذا كنت بتعرف طريقة تطبيق هذا الكود اخبرني وشكرا

  1. ابحث داخل النص عن إحدى العمليات الحسابية، إذا وجدتها، قم باسنادها إلى متغير char و اخرج من الـ loop.
  2. اجعل متغير الـ char السابق هو الـ delimiter للـ StringTokenizer.
  3. قم بالمرور على جميع عناصرالـ StringTokenizer، الـ tokens ستُمثل العددين اللذين تبحث عنهما.
تم تعديل بواسطه Snack3r
1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

  1. ابحث داخل النص عن إحدى العمليات الحسابية، إذا وجدتها، قم باسنادها إلى متغير char و اخرج من الـ loop.
  2. اجعل متغير الـ char السابق هو الـ delimiter للـ StringTokenizer.
  3. قم بالمرور على جميع عناصرالـ StringTokenizer، الـ tokens ستُمثل العددين اللذين تبحث عنهما.

 

 

 

اخي للأسف انا مبتدأ بالجافا لذلك انا فهمت كيف ممكن ابحث عن احدى العمليات الحسابية وتغزينها في متغير char ولكن لم افهم الباقي

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أنصحك إذن بالرجوع إلى الـ String و دراستها من جديد لأنها تُمثل  40 في المائة من قوة الجافا، إن لم تكن مُتمكنا منها فلا يُمكنك التقدم.

المفروض أن الواحد قبل ما يدخل الـ GUI لازم يكون درس فصول مُحددة قبلها، لأن مستوى برمجة الواجهات يقتضي عدد مُعين من الـ prerequisite.

 

عموماً، المثال التالي يُوضح لك كيفية عمل الـ StringTokenizer بعد تحديد الـ delimiter :

import java.util.StringTokenizer;public class Test {    public static void main(String[] args) {        String text = "6109+372";        char delimiter = '+';        StringTokenizer stk = new StringTokenizer(text, String.valueOf(delimiter));        while (stk.hasMoreElements()) {            System.out.println(stk.nextElement());        }    }}

بالتوفيق.

تم تعديل بواسطه Snack3r
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

أنصحك إذن بالرجوع إلى الـ String و دراستها من جديد لأنها تُمثل  40 في المائة من قوة الجافا، إن لم تكن مُتمكنا منها فلا يُمكنك التقدم.

المفروض أن الواحد قبل ما يدخل الـ GUI لازم يكون درس فصول مُحددة قبلها، لأن مستوى برمجة الواجهات يقتضي عدد مُعين من الـ prerequisite.

 

عموماً، المثال التالي يُوضح لك كيفية عمل الـ StringTokenizer بعد تحديد الـ delimiter :

import java.util.StringTokenizer;public class Test {    public static void main(String[] args) {        String text = "6109+372";        char delimiter = '+';        StringTokenizer stk = new StringTokenizer(text, String.valueOf(delimiter));        while (stk.hasMoreElements()) {            System.out.println(stk.nextElement());        }    }}

بالتوفيق.

 

 

اخي اولا شكرا لك على الافادة وانا بالفعل درست جافا قبل البدء في gui عن طريق دورات عبدالله عيد ولكنها لم تكن مكتملة وهنالك بعض الدوال الي اكيد راح انساها وراح اتذكرها مع الممارسة.

 

لكن واجهتني مشكلة مع هذا الكود هو اني قمت بتحويل القيم الناتجة من String الى int ولكن لم اتمكن من ان اضع كل قيمة في متغير اي اني لم استطع جمع القيمتين الناتجات من الـ loop استطعت ان اجلب القيم من textfield وثم ازالة علامة الجمع من القيم ثم

 

قمت بطباعة كل قيمة في سطر كما بالكود ولكن لم اتمكن من جمع القيم لأن القيمتين الناتجات من الطباعة يتم تخزينهم في متغير واحد فلم استطع جمعهم اتمنى الافادة.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

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

 

​initCompenents();pack();

وهذه الاكواد اول مرة اراها فأريد الاستفسار ما هي فائدة هذه الاكواد 

 

 

 

اما بالنسبة لنصيحتك اني أقرأ كتب للأسف الكتب العربية او المراجع العربية غير مفيدة وأنا لا اجيد الانجليزية.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

دورة الأخ عبد الله لا تُغطي حتى أساسيات الجافا، و إنما هي مُجرد مدخل للمبتدئين.

أنصحك يالقراءة من الكتب إن أردت الإحتراف.

 

قمتُ بكتابة الكود التالي على عُجالة، أعتقد انه يؤدي المطلوب، إذا كانت لديك أي أسئلة فلا تتردد في طرحها لكن حاول أن تفهم الكود أولا :

import java.awt.BorderLayout;import java.awt.Container;import java.awt.Dimension;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.NoSuchElementException;import java.util.StringTokenizer;import javax.swing.*;public class BasicCalculator extends JDialog implements ActionListener {    private Container container;    private JPanel topPanel, resultPanel;    private JTextField operation;    private JButton submit;    private JLabel result;    public BasicCalculator(String titre) {        setTitle(titre);        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);        initCompenents();        pack();        setLocationRelativeTo(null);        setResizable(false);    }    private void initCompenents() {        operation = new JTextField();        operation.setPreferredSize(new Dimension(150, 23));        submit = new JButton("Submit");        submit.addActionListener(this);        result = new JLabel("Ready");        result.setPreferredSize(new Dimension(200, 23));        topPanel = new JPanel();        topPanel.add(operation);        topPanel.add(submit);        resultPanel = new JPanel();        resultPanel.add(result);        container = this.getContentPane();        container.setLayout(new BorderLayout());        container.add(topPanel, BorderLayout.CENTER);        container.add(resultPanel, BorderLayout.SOUTH);    }    @Override    public void actionPerformed(ActionEvent e) {        if (e.getSource() == submit) {            String text = operation.getText();            char delimiter = '.';            for (int i = 0; i < text.length(); i++) {                if (text.charAt(i) == '+' || text.charAt(i) == '-'                        || text.charAt(i) == '*' || text.charAt(i) == '/') {                    delimiter = text.charAt(i);                    break;                }            }            if (delimiter == '.') {                return;            }            StringTokenizer stk = new StringTokenizer(text, String.valueOf(delimiter));            try {                float x = Float.parseFloat(stk.nextElement().toString());                float y = Float.parseFloat(stk.nextElement().toString());                double sum;                switch (delimiter) {                    case '+':                        sum = x + y;                        break;                    case '-':                        sum = x - y;                        break;                    case '*':                        sum = x * y;                        break;                    case '/':                        sum = x / y;                        break;                    default:                        return;                }                result.setText(x + " " + delimiter + " " + y + " = " + sum);            } catch (NoSuchElementException | NumberFormatException ex) {                result.setText("Incorrect input !");            }        }    }    public static void main(String args[]) {        BasicCalculator bc = new BasicCalculator("Basic Calculator");        bc.setVisible(true);    }}

صور من واجهة الحاسبة :

 

attachicon.gif1.jpg

 

attachicon.gif2.jpg

 

attachicon.gif3.jpg

 

بالتوفيق.

 

 

 

 

 

بالفعل اخي الكريم تم فهم الكود بارك الله فيك وفي امثالك شكرا كثيير الك اتمنى انك تجيبني على السؤال الذي بالاعلى

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

 

هذه الاكواد اول مرة اراها فأريد الاستفسار ما هي فائدة هذه الاكواد

 

الدالة initCompenents تقوم بإضافة مختلف العناصر الرسومية للواجهة و تقوم بتهئية الـ Layouts أيضاً.

pack تأتي فائدتها في تحديد حجم النافذة بشكل ديناميكي حسب المُكونات الموجودة داخل الـ frame.

تم تعديل بواسطه Snack3r
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا كثير الك اخي الكريم بالفعل الكود افادني كثير وحتى اني تعلمت شيئ كنت اجهله وهو الـ switch والـ pack جد شكرا الك

تم تعديل بواسطه Mohamed Hamdan
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
زوار
This topic is now closed to further replies.

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .