计数机习作请教
时间:2011-12-04
来源:互联网
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;//用来定义送入数
public class calculator30137452 extends JFrame {//JFrame = vb form
private JPanel displayPanel;// private 限制用法
private JPanel numPanel;// JPanel 控制form area
private JTextField display; // TextBox
private JButton num[]; // Button
private JButton add,min,plu,dir,eq,clear;
private int value = 0;
private int numdata = 0;
private int numdate = 0;
private int numsave = 0;
private int swit = 0;
private int save = 0;
private int out = 0;
private int y[] = new int [10];
private static Panel pnum1=new Panel(new GridLayout(4,3));
private static Panel pnum2=new Panel(new GridLayout(4,3));
public static void main(String args[]){
calculator30137452 c = new calculator30137452();
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭用 = System.exit button版
c.setSize(220, 170);
c.setVisible(true);//出现用
c.setResizable(false);//限制大少 不能变动
pnum1.setBounds(20,60,90,105);
pnum2.setBounds(110,60,30,105);
}
public calculator30137452() {
super("Calculator");
displayPanel = new JPanel();//新开panel
displayPanel.setLayout(new GridLayout(1,1));//限制数目
display = new JTextField(20);//设定textfield最大 数目
display.setHorizontalAlignment(JTextField.RIGHT);
display.setEditable(false);//禁止出文字
display.setText("0");//set字
displayPanel.add(display);
add(displayPanel,BorderLayout.NORTH);//控制方位
numPanel = new JPanel();
numPanel.setLayout(new GridLayout (4,4));
num = new JButton[10];
for(int i = 0; i<= 9;i++){
num[i] = new JButton(Integer.toString);
num[i].addActionListener(new NumHandler());//ActionListere
numPanel.add(num[i]);
}
dir = new JButton ("/");
dir.addActionListener(new dir());
plu = new JButton ("*");
plu.addActionListener(new plu());
min = new JButton ("-");
min.addActionListener(new min());
add = new JButton ("+");
add.addActionListener(new urselist());
eq = new JButton ("=");
eq.addActionListener(new eq());
clear = new JButton ("C");
clear.addActionListener(new ClearHandler());
numPanel.add(num[7]);
numPanel.add(num[8]);
numPanel.add(num[9]);
numPanel.add(dir);
numPanel.add(num[4]);
numPanel.add(num[5]);
numPanel.add(num[6]);
numPanel.add(add);
numPanel.add(num[1]);
numPanel.add(num[2]);
numPanel.add(num[3]);
numPanel.add(plu);
numPanel.add(num[0]);
numPanel.add(clear);
numPanel.add(eq);
numPanel.add(min);
add(numPanel, BorderLayout.SOUTH);
}
private class NumHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
value = value * 10 +Integer.parseInt(e.getActionCommand());
display.setText(Integer.toString(value));//输入用
}
}
private class ClearHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
value = 0;
numdata = 0;
numsave = 0;
display.setText(Integer.toString(value));//输入用
}
}
private class urselist implements ActionListener{
public void actionPerformed(ActionEvent e){
if (value != 0){
numdata = value;
numdate = numdata;
numsave+= numdata;
value =0;
numdata = 0;
swit = 1;
}
display.setText(Integer.toString(numsave));//输入用
}
}
private class min implements ActionListener{
public void actionPerformed(ActionEvent e){
if (value!= 0){
numdata = value;
numsave-= numdata;
value =0;
swit = 2;
}
display.setText(Integer.toString(numsave));//输入用
}
}
private class plu implements ActionListener{
public void actionPerformed(ActionEvent e){
if (value!= 0){
numsave = 1;
numdata = value;
numsave*= numdata;
value =0;
swit = 3;}
else {
numdata = value;
numsave*= numdata;
value =0;
swit = 3;
/* numdata = value;
numsave*= numdata;
value =0;
swit = 3;*/
}
display.setText(Integer.toString(numsave));//输入用
}
}
private class dir implements ActionListener{
public void actionPerformed(ActionEvent e){
if (value!= 0){
numdata = value;
numsave/= numdata;
value =0;
swit = 4;
}
display.setText(Integer.toString(numsave));//输入用
}
}
private class eq implements ActionListener{
public void actionPerformed(ActionEvent e){
if(swit == 1){
numsave+=numdate;
numdate = 0;
display.setText(Integer.toString(numsave));
}
else if (swit ==2 ){
numsave-=numdata;
numdata = 0;
display.setText(Integer.toString(numsave));
}
else if (swit ==3 ){
numsave*=numdata;
numdata = 0;
display.setText(Integer.toString(numsave));
}
else if (swit ==4 ){
numsave/=numdata;
numdata = 0;
display.setText(Integer.toString(numsave));
}
//输入用
}
}
/*Button but =(Button) e.getSource();
if (but == add){
numdata = value;
save =1;
}
else if (but == dir){
numdata = value;
save =2;
}
else if (but == min){
numdata = value;
save =3;
}
else if (but == plu){
numdata = value;
save =4;
}
else if (but ==eq){
numdata = value;
save =5;
}
switch (save){
case 1:
numsave+=numdata;
break;
case 2:
numsave /= numdata;
break;
case 3:
numsave -= numdata;
break;
case 4:
numsave *= numdata;
break;
default:
}*/
}
基本数为零时 数目 * / 数出现错误
而且 重覆使用后 数据会自动增加一次
请问是 指令问题 还是我排列问题?
import java.awt.*;
import java.awt.event.*;//用来定义送入数
public class calculator30137452 extends JFrame {//JFrame = vb form
private JPanel displayPanel;// private 限制用法
private JPanel numPanel;// JPanel 控制form area
private JTextField display; // TextBox
private JButton num[]; // Button
private JButton add,min,plu,dir,eq,clear;
private int value = 0;
private int numdata = 0;
private int numdate = 0;
private int numsave = 0;
private int swit = 0;
private int save = 0;
private int out = 0;
private int y[] = new int [10];
private static Panel pnum1=new Panel(new GridLayout(4,3));
private static Panel pnum2=new Panel(new GridLayout(4,3));
public static void main(String args[]){
calculator30137452 c = new calculator30137452();
c.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭用 = System.exit button版
c.setSize(220, 170);
c.setVisible(true);//出现用
c.setResizable(false);//限制大少 不能变动
pnum1.setBounds(20,60,90,105);
pnum2.setBounds(110,60,30,105);
}
public calculator30137452() {
super("Calculator");
displayPanel = new JPanel();//新开panel
displayPanel.setLayout(new GridLayout(1,1));//限制数目
display = new JTextField(20);//设定textfield最大 数目
display.setHorizontalAlignment(JTextField.RIGHT);
display.setEditable(false);//禁止出文字
display.setText("0");//set字
displayPanel.add(display);
add(displayPanel,BorderLayout.NORTH);//控制方位
numPanel = new JPanel();
numPanel.setLayout(new GridLayout (4,4));
num = new JButton[10];
for(int i = 0; i<= 9;i++){
num[i] = new JButton(Integer.toString);
num[i].addActionListener(new NumHandler());//ActionListere
numPanel.add(num[i]);
}
dir = new JButton ("/");
dir.addActionListener(new dir());
plu = new JButton ("*");
plu.addActionListener(new plu());
min = new JButton ("-");
min.addActionListener(new min());
add = new JButton ("+");
add.addActionListener(new urselist());
eq = new JButton ("=");
eq.addActionListener(new eq());
clear = new JButton ("C");
clear.addActionListener(new ClearHandler());
numPanel.add(num[7]);
numPanel.add(num[8]);
numPanel.add(num[9]);
numPanel.add(dir);
numPanel.add(num[4]);
numPanel.add(num[5]);
numPanel.add(num[6]);
numPanel.add(add);
numPanel.add(num[1]);
numPanel.add(num[2]);
numPanel.add(num[3]);
numPanel.add(plu);
numPanel.add(num[0]);
numPanel.add(clear);
numPanel.add(eq);
numPanel.add(min);
add(numPanel, BorderLayout.SOUTH);
}
private class NumHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
value = value * 10 +Integer.parseInt(e.getActionCommand());
display.setText(Integer.toString(value));//输入用
}
}
private class ClearHandler implements ActionListener{
public void actionPerformed(ActionEvent e){
value = 0;
numdata = 0;
numsave = 0;
display.setText(Integer.toString(value));//输入用
}
}
private class urselist implements ActionListener{
public void actionPerformed(ActionEvent e){
if (value != 0){
numdata = value;
numdate = numdata;
numsave+= numdata;
value =0;
numdata = 0;
swit = 1;
}
display.setText(Integer.toString(numsave));//输入用
}
}
private class min implements ActionListener{
public void actionPerformed(ActionEvent e){
if (value!= 0){
numdata = value;
numsave-= numdata;
value =0;
swit = 2;
}
display.setText(Integer.toString(numsave));//输入用
}
}
private class plu implements ActionListener{
public void actionPerformed(ActionEvent e){
if (value!= 0){
numsave = 1;
numdata = value;
numsave*= numdata;
value =0;
swit = 3;}
else {
numdata = value;
numsave*= numdata;
value =0;
swit = 3;
/* numdata = value;
numsave*= numdata;
value =0;
swit = 3;*/
}
display.setText(Integer.toString(numsave));//输入用
}
}
private class dir implements ActionListener{
public void actionPerformed(ActionEvent e){
if (value!= 0){
numdata = value;
numsave/= numdata;
value =0;
swit = 4;
}
display.setText(Integer.toString(numsave));//输入用
}
}
private class eq implements ActionListener{
public void actionPerformed(ActionEvent e){
if(swit == 1){
numsave+=numdate;
numdate = 0;
display.setText(Integer.toString(numsave));
}
else if (swit ==2 ){
numsave-=numdata;
numdata = 0;
display.setText(Integer.toString(numsave));
}
else if (swit ==3 ){
numsave*=numdata;
numdata = 0;
display.setText(Integer.toString(numsave));
}
else if (swit ==4 ){
numsave/=numdata;
numdata = 0;
display.setText(Integer.toString(numsave));
}
//输入用
}
}
/*Button but =(Button) e.getSource();
if (but == add){
numdata = value;
save =1;
}
else if (but == dir){
numdata = value;
save =2;
}
else if (but == min){
numdata = value;
save =3;
}
else if (but == plu){
numdata = value;
save =4;
}
else if (but ==eq){
numdata = value;
save =5;
}
switch (save){
case 1:
numsave+=numdata;
break;
case 2:
numsave /= numdata;
break;
case 3:
numsave -= numdata;
break;
case 4:
numsave *= numdata;
break;
default:
}*/
}
基本数为零时 数目 * / 数出现错误
而且 重覆使用后 数据会自动增加一次
请问是 指令问题 还是我排列问题?
作者: zeromr 发布时间: 2011-12-04
你的错误讯息呢?
张贴程式时请务必使用code标记
这样code才好看
张贴程式时请务必使用code标记
这样code才好看
作者: pclevin 发布时间: 2011-12-05
code标记?
不
整体程式 没问题
能顺利 Process complete
但出来的计算机出现一个奇怪的问题
e.g: 初始数为0
进行任何 * / 数式结果都会变成 0
而且 数据 不能清除上一次输入记录 变成了 数字 自我增值的情况出现= =
但我想了半天都想不到debug的方法
不
整体程式 没问题
能顺利 Process complete
但出来的计算机出现一个奇怪的问题
e.g: 初始数为0
进行任何 * / 数式结果都会变成 0
而且 数据 不能清除上一次输入记录 变成了 数字 自我增值的情况出现= =
但我想了半天都想不到debug的方法
作者: zeromr 发布时间: 2011-12-05
code标记 指的是JAVA WORLD 再贴文或回文 时有个用在贴程式码的标记
是个#号
另外怎会不知如何DEBUG
若是用IDE开发 都有DEBUG模式 这部分请膜拜孤狗大神
还有再不济 你还是可以用print 在相关的程式附近
将值印在console
是个#号
另外怎会不知如何DEBUG
若是用IDE开发 都有DEBUG模式 这部分请膜拜孤狗大神
还有再不济 你还是可以用print 在相关的程式附近
将值印在console
作者: jk47 发布时间: 2011-12-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28