Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 5 của 5
  1. #1
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Lỗi Giao diện giải phương trình bậc nhất

    _Mình viết một chương trình tạo một giao diện để giải phương trình bậc nhất như hình dưới:

    _Khi lấy dữ liệu từ text field :
    try{
    final int a = Integer.parseInt(aTF.getText().trim());//lay du lieu tu aTF
    final int b = Integer.parseInt(bTF.getText().trim());//lay du lieu tu bTF
    }
    catch(NumberFormatException e){}
    thì luôn luôn xảy ra ngoại lệ ở đây nên dù nhập thế nào thì a,b vẫn không có giá trị.
    _Mình sửa mãi mà không được.Mong các bác pro giúp mình với.Mình cảm ơn trước.

    Mã:
    import javax.swing.*;
    import java.awt.*;
    import java.awt.event.*;
    class PtbnGUI{
    	public static void main(String args []){
    		ptbnFrame f = new ptbnFrame();
    		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		f.setVisible(true);
    	}
    }	
    class ptbnFrame extends JFrame{
    	public ptbnFrame(){
    		setTitle("Giai Phuong Trinh Bac Nhat");
    		setSize(DEFAULT_WIDTH,DEFAULT_HEIGHT);
    		//Phan giao dien
    		Box hbox1 = Box.createHorizontalBox();
    		JLabel name = new JLabel("GIAI PHUONG TRINH BAC NHAT");
    		hbox1.add(name);
    		
    		Box hbox2 = Box.createHorizontalBox();
    		JLabel aLabel = new JLabel("Nhap a:");
    		JTextField aTF = new JTextField(20);
    		aTF.setMaximumSize(aTF.getPreferredSize());
    		hbox2.add(aLabel);
    		hbox2.add(Box.createHorizontalStrut(10));
    		hbox2.add(aTF);
    		
    		Box hbox3 = Box.createHorizontalBox();
    		JLabel bLabel = new JLabel("Nhap b:");
    		JTextField bTF = new JTextField(20);
    		bTF.setMaximumSize(bTF.getPreferredSize());
    		hbox3.add(bLabel);
    		hbox3.add(Box.createHorizontalStrut(10));
    		hbox3.add(bTF);
    		
    		Box hbox4 = Box.createHorizontalBox();
    		JLabel kqLabel = new JLabel("Ket Qua:");
    		JTextField kqTF = new JTextField(20);
    		kqTF.setMaximumSize(kqTF.getPreferredSize());
    		hbox4.add(kqLabel);
    		hbox4.add(Box.createHorizontalStrut(10));
    		hbox4.add(kqTF);
    		
    		Box hbox5 = Box.createHorizontalBox();
    		JButton okBtn = new JButton("OK");
    		JButton cancelBtn = new JButton("Cancel");
    		hbox5.add(okBtn);
    		hbox5.add(Box.createHorizontalStrut(70));
    		hbox5.add(cancelBtn);
    		
    		Box vbox = Box.createVerticalBox();
    		vbox.add(hbox1);
    		vbox.add(Box.createGlue());
    		vbox.add(hbox2);
    		vbox.add(Box.createVerticalStrut(10));
    		vbox.add(hbox3);
    		vbox.add(Box.createVerticalStrut(10));
    		vbox.add(hbox4);
    		vbox.add(Box.createGlue());
    		vbox.add(hbox5);
    		add(vbox);	
    
    		//Event Listener
    		try{
    			final int a = Integer.parseInt(aTF.getText().trim());//lay du lieu tu aTF
    			final int b = Integer.parseInt(bTF.getText().trim());//lay du lieu tu bTF
    		}
    		catch(NumberFormatException e){}
    		
    		okBtn.addActionListener(new ActionListener(){
    			public void actionPerformed(ActionEvent event){
    				if(a == 0)
    					if(b == 0) 
    						System.out.println("Phuong trinh vo so ngiem");
    					else
    						System.out.println("Phuong trinh vo ngiem");
    				else
    					System.out.println("Nghiem cua phuong trinh la x= " + (float)(-b/a));
    			}	
    		});
    	}		
    	private int DEFAULT_WIDTH = 640;
    	private int DEFAULT_HEIGHT = 480;
    }

  2. #2
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Phần đó bạn phải bỏ vào actionPerformed chứ sao lại vứt nó ra ngoài rồi ngồi kêu.

  3. #3
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    _Theo mình biết,inner class có thể truy cập đến các thành phần của outer class mà.Với lại,mình làm như bạn nói nhưng chương trình vẫn báo lỗi và không xác định được giá trị của a,b.Bạn xem lại giúp mình với

  4. #4
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Nếu bạn muốn a và b là 2 trường của lớp ngoài thì bạn khai báo nó bên trong lớp chứ không phải bên trong phương thức. Khi đó thì lớp trong mới truy xuất được.
    Đồng thời nhớ điều này: final là dùng cho hằng số tức là nó chỉ được gán giá trị duy nhất một lần. Trường hợp của bạn dùng final là hoàn toàn sai.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0

    Nếu bạn muốn a và b là 2 trường của lớp ngoài thì bạn khai báo nó bên trong lớp chứ không phải bên trong phương thức. Khi đó thì lớp trong mới truy xuất được.
    Đồng thời nhớ điều này: final là dùng cho hằng số tức là nó chỉ được gán giá trị duy nhất một lần. Trường hợp của bạn dùng final là hoàn toàn sai.
    Mình hiểu rồi.Cảm ơn bạn nhiều [IMG]images/smilies/smile.png[/IMG])

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •