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

تحويل من String الى Integer

بدأه m.javest في 14 ديسمبر 2012 · 1 رد · 888 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله تعالى وبركاته:

الكود بشكل بسيط هو عمل برنامج صغير جدا وواجهته تتكون من button و jTextfield1 و jTextArea ندخل قيمة في التكست فيلد وعند الكليك على Button نقوم بحساب مجموع الأعداد من 1 الى الرقم الذي يدخله المستخدم في textfield ويتم عرض النتيجة في text area عملت كود الـ Button بهذا الشكل الا انه فيه خطأ ولا ادري ماهو فان كان بالإمكان المساعدة :

s =jTextField1.getText();
   a= Integer.parseInt(s);

       for (i=1;i<a;i++){
        l=l+1;
        };
        String m = Integer.toString(l);
        jTextArea2.setText(m);

ورسالة الخطأ :

اقتباس

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: " 3"

at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:481)

at java.lang.Integer.parseInt(Integer.java:527)

at partage.Calcul.jButton1ActionPerformed(Calcul.java:131)

at partage.Calcul.access$000(Calcul.java:17)

at partage.Calcul$1.actionPerformed(Calcul.java:46)

at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)

at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)

at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)

at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)

at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)

at java.awt.Component.processMouseEvent(Component.java:6504)

at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

at java.awt.Component.processEvent(Component.java:6269)

at java.awt.Container.processEvent(Container.java:2229)

at java.awt.Component.dispatchEventImpl(Component.java:4860)

at java.awt.Container.dispatchEventImpl(Container.java:2287)

at java.awt.Component.dispatchEvent(Component.java:4686)

at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

at java.awt.Container.dispatchEventImpl(Container.java:2273)

at java.awt.Window.dispatchEventImpl(Window.java:2713)

at java.awt.Component.dispatchEvent(Component.java:4686)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:707)

at java.awt.EventQueue.access$000(EventQueue.java:101)

at java.awt.EventQueue$3.run(EventQueue.java:666)

at java.awt.EventQueue$3.run(EventQueue.java:664)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

at java.awt.EventQueue$4.run(EventQueue.java:680)

at java.awt.EventQueue$4.run(EventQueue.java:678)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:677)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)

#2

تصحيح محاولتك :

import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.*;

class Test extends JFrame implements ActionListener {

    private JTextField tInput;
    private JTextArea tOutPut;
    private JButton bCalcul;
    private JPanel pButton, pJText;

    public Test() {
        initComponents();
    }

    private void initComponents() {
        pJText = new JPanel();

        tInput = new JTextField();
        tInput.setPreferredSize(new Dimension(170, 20));
        pJText.add(tInput);

        tOutPut = new JTextArea();
        tOutPut.setFont(new java.awt.Font("Tahoma", 0, 11));
        tOutPut.setEditable(false);
        tOutPut.setPreferredSize(new Dimension(230, 60));
        pJText.add(tOutPut);

        pJText.setBorder(BorderFactory.createTitledBorder("Sn@CkeR"));
        pJText.setLayout(new FlowLayout(FlowLayout.CENTER));
        getContentPane().add(pJText);

        pButton = new JPanel();
        pButton.setLayout(new FlowLayout());

        bCalcul = new JButton("Calcul");
        bCalcul.addActionListener(this);
        pButton.add(bCalcul);

        pButton.setLayout(new FlowLayout(FlowLayout.CENTER));
        getContentPane().add(pButton);

        getContentPane().setLayout(new BoxLayout(getContentPane(), BoxLayout.Y_AXIS));
    }

    private static void lookAndFeel() {
        try {
            UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        } catch (UnsupportedLookAndFeelException ex) {
            Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private void calcul(JTextField textField, JTextArea textArea) {
        String str = textField.getText();
        int toInt = Integer.parseInt(str), sum = 0;

        for (int i = 1; i < toInt; i++) {
            sum = sum + i;
        }
        textArea.setText("Result : " + sum);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == bCalcul) {
            try {
                calcul(tInput, tOutPut);
            } catch (NumberFormatException exception) {
                tOutPut.setText("Erreur ! Vous devez entrer un nombre entier.");
            }
            //System.exit(0);
        }
    }

    public static void main(String args[]) {
        lookAndFeel();
        Test Obj = new Test();
        Obj.setTitle("By Sn@CkeR - ArabTeam");
        Obj.setDefaultCloseOperation(EXIT_ON_CLOSE);
        Obj.setSize(420, 240);
        Obj.setLocationRelativeTo(null);
        Obj.setResizable(false);
        Obj.setVisible(true);
    }
}

عندما يُدخل المستخدم نص أو ما شابه في الحقل الخاص بالعدد سيتم إصدار Exception من نوع NumberFormatException لذا قمتُ بمعالجة هذه الحالة.

أيضا, من الجيد أن تدرس الحالة التي يحدث فيها OverFlow للمتغير toInt.

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