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

كيفية جمع عددين في جافا

مغلقمُجاب
بدأه Mohamed Hamdan في 15 أكتوبر 2014 · 13 رد · 4,156 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

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

#2

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

1
#3
Snack3r كتب:

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

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

1
#4
Snack3r كتب:

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

 

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

#5
اقتباس

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

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

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

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

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

اقتباس

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

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

 

 

 

بالتوفيق.

تم تعديل هذه المشاركة بواسطة Snack3r في 16 أكتوبر 2014 في 13:54

2
#6
اقتباس

 

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

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

تم تعديل هذه المشاركة بواسطة Snack3r في 16 أكتوبر 2014 في 14:08

1
#7
Snack3r كتب:

 

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

 

 

 

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

#8

أنصحك إذن بالرجوع إلى الـ 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 في 16 أكتوبر 2014 في 19:30

#9
Snack3r كتب:

أنصحك إذن بالرجوع إلى الـ 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 وثم ازالة علامة الجمع من القيم ثم

 

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

#10 أفضل إجابة
اقتباس

بالفعل درست جافا قبل البدء في 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
#11

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

 

​initCompenents();pack();

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

 

 

 

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

#12
Snack3r كتب:

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

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

 

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

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

 

بالتوفيق.

 

 

 

 

 

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

#13
اقتباس

 

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

 

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

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

تم تعديل هذه المشاركة بواسطة Snack3r في 17 أكتوبر 2014 في 02:11

#14

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

تم تعديل هذه المشاركة بواسطة Mohamed Hamdan في 17 أكتوبر 2014 في 22:23

هذا الموضوع مغلق.

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