Read-only archive. Login and posting are unavailable.

PDA

View Full Version : [Giúp đỡ học tập - Java core] Sửa lỗi trong code nhỏ !!!


steel_dragon
30-05-2010, 17:09
Em có đoạn code ngắn nhưng mà bị sai , sửa mãi cả ngày không xong, post lên đây nhờ ae giúp :brick:

Miêu tả đề bài : 1 Form "máy tính" có 4 nhãn "Nhập số 1", "Nhập số 2", "Kết quả", và nhãn title
4 nút Cọng - trừ - nhân - chia. Nhập số và ấn nút thì ra "Kết quả "

Code :
import java.awt.*;
import java.awt.event.*;
import javax.swing.JOptionPane;
import java.io.*;
public class MayTinh {

public static void main(String[] args) {

new Form();
}
}
class Form extends Frame implements ActionListener
{
Label lb1_title,lb1,lb2,lb3;
TextField tf1, tf2, tf3;
Button btnCong, btnTru, btnNhan, btnChia;

GridBagConstraints gbc = new GridBagConstraints();
GridBagLayout gb1 = new GridBagLayout();
Form()
{
setSize(400,400);
setLayout(gb1);
lb1 = new Label("So 1");
lb2 = new Label("So 2");
lb3 = new Label("Ket qua");
lb1_title = new Label("Calculator");

tf1 = new TextField(10);
tf2 = new TextField(10);
tf3 = new TextField(10);

btnCong = new Button("+");
btnTru = new Button("-");
btnNhan = new Button("x");
btnChia = new Button("/");

btnCong.addActionListener(this);
btnTru.addActionListener(this);
btnNhan.addActionListener(this);
btnChia.addActionListener(this);

gbc.insets = new insets(2,2,2,2);
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.gridheight = 1;
gbc.gridwidth = 1;
addConstraints(lb1_title,1,0);

addConstraints(lb1,0,1);
addConstraints(tf1,1,1);
addConstraints(lb2,0,2);
addConstraints(tf2,1,2);
addConstraints(lb3,0,3);
addConstraints(tf3,1,3);

gbc.insets = new insets(10,5,5,5);
addConstraints(btnCong,1,4);
addConstraints(btnTru,2,4);
addConstraints(btnNhan,3,4);
addConstraints(btnChia,4,4);

addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent we)
{
setVisible(false);
System.exit(0);
}
});

setVisible(true);
}

void addConstraints(Component cpn,int x, int y)
{
gbc.gridx = x;
gbc.gridy = y;
gb1.setConstraints(cpn,gbc);
add(cpn);
}

public void actionPerformed(ActionEvent calc)
{
if (calc.getSource()==btnCong)
{
int num = Integer.parseInt(tf1.getText())+ Integer.parseInt(tf2.getText());
tf3.setText(String.valueOf(num));
}

if (calc.getSource()==btnTru)
{
int num = Integer.parseInt(tf1.getText())- Integer.parseInt(tf2.getText());
tf3.setText(String.valueOf(num));
}
if (calc.getSource()==btnNhan)
{
int num = Integer.parseInt(tf1.getText())* Integer.parseInt(tf2.getText());
tf3.setText(String.valueOf(num));
}
if (calc.getSource()==btnChia)
{
if (tf2.getText()=="0"| tf1.getText()=="")
{
System.out.println("Loi nhap so");
JOptionPane.showMessageDialog(new Frame(),"Loi nhap so");
}
else
{
int num = Integer.parseInt(tf1.getText())/ Integer.parseInt(tf2.getText());
tf3.setText(String.valueOf(num));
}
}
}
}

Phần thực hiện phép chia : báo lỗi khi số chia =0 hoặc chưa có dữ liệu ...
if (tf2.getText()=="0"| tf1.getText()=="")
{
System.out.println("Loi nhap so");
JOptionPane.showMessageDialog(new Frame(),"Loi nhap so");
}
else
{
int num = Integer.parseInt(tf1.getText())/ Integer.parseInt(tf2.getText());
tf3.setText(String.valueOf(num));
}
}

haico1992
30-05-2010, 18:01
Hình như nhầm chuồng rùi bạn (được cái là trình bày sạch đẹp)

Mr.Over
30-05-2010, 18:06
ghi cái lỗi ra đây, lười đọc quá, ko thì đua ym! đây debug cho

Mr.Over
30-05-2010, 18:10
ờ mà bro code bằng tay hả, thôi, ko chơi mình toàn kéo thả :D
ra ruif gbc.insets = new insets(10,5,5,5);

chữ i viết Hoa cơ Insets
Chắc code bằng notepad mơi bị vậy chứ xài tool thì chả bao giờ :misdoubt:

steel_dragon
30-05-2010, 19:21
ghi cái lỗi ra đây, lười đọc quá, ko thì đua ym! đây debug cho

Bác uây, bác viết lại cho em cái phần chia được không ạ
Ấn nút chia
Nếu số thứ 2 = 0 hoặc là chưa có dữ liệu thì báo lỗi

P/S: em viết = JCreator , chả thấy báo lỗi ở đâu cả :surrender:

steel_dragon
30-05-2010, 20:06
Up , em cần giúp đỡ 1 tối thôi các bác ạ !

Mr.Over
30-05-2010, 20:12
Bác uây, bác viết lại cho em cái phần chia được không ạ
Ấn nút chia
Nếu số thứ 2 = 0 hoặc là chưa có dữ liệu thì báo lỗi

P/S: em viết = JCreator , chả thấy báo lỗi ở đâu cả :surrender:

mình ko viết java kiểu này mình xài netbean nên các sự kiện đc nó tự sinh ra hết(biết là ko nên nhưng ở trường nó dạy thế):brick:, nên mình ko biết cách nghe sự kiện đâu. Nhưng tư tưởng code thì bác get dữ liệu về, nếu dữ liệu ở đó khác 0 hoặc null thì gọi cái method chia ra.
Nếu bác thích thì mình code cho bác nguyên bài đó luôn:surrender:

steel_dragon
30-05-2010, 20:17
mình ko viết java kiểu này mình xài netbean nên các sự kiện đc nó tự sinh ra hết(biết là ko nên nhưng ở trường nó dạy thế):brick:, nên mình ko biết cách nghe sự kiện đâu. Nhưng tư tưởng code thì bác get dữ liệu về, nếu dữ liệu ở đó khác 0 hoặc null thì gọi cái method chia ra.
Nếu bác thích thì mình code cho bác nguyên bài đó luôn:surrender:

Vâng , em thấm nhuần tư tưởng ấy

đây là đoạn em get dữ liệu :

if (tf2.getText()=="0"| tf1.getText()=="")
{
System.out.println("Loi nhap so");
JOptionPane.showMessageDialog(new Frame(),"Loi nhap so");
}
else
{
int num = Integer.parseInt(tf1.getText())/ Integer.parseInt(tf2.getText());
tf3.setText(String.valueOf(num));
}
}
]

giupemvoi
30-05-2010, 20:23
Vâng , em thấm nhuần tư tưởng ấy

đây là đoạn em get dữ liệu :

if (tf2.getText()=="0"| tf1.getText()=="")
{
System.out.println("Loi nhap so");
JOptionPane.showMessageDialog(new Frame(),"Loi nhap so");
}
else
{
int num = Integer.parseInt(tf1.getText())/ Integer.parseInt(tf2.getText());
tf3.setText(String.valueOf(num));
}
}
]

Bạn không được so sánh == với "0" mà phải viết lại là
tf2.getText().compareToIgnoreCase("0")==0 . Với cả phép toán hoặc trong biểu thức điều kiện là || chứ ko phải là | .

Mr.Over
30-05-2010, 20:34
Đây là code mình viết bằng netbeanhttp://megashare.vn/dl.php/1228352
bạn xem rồi viết lại cũng đc :D,

steel_dragon
30-05-2010, 21:02
Đây là code mình viết bằng netbean
bạn xem rồi viết lại cũng đc :D,

Diễn đàn ko có nút Thanks để em cám ơn các bác nhỉ

Cám ơn bác Mr.Over và bác giupemvoi

minh_chau
30-05-2010, 21:54
AI CÓ phần mền java nào chạy trên điên thoại
mà nhập 1 vài ký tự đầu nó tra tới dòng đó(như kiểu tra từ điển ấy)
dữ liệu mình tự nhập