大家帮我看一下,我的代码出了什么问题?

superlch 2002-05-12 05:29:14
下面是我的代码:

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Caculate extends JFrame implements ActionListener
{
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JTextField tf=new JTextField(" ",12);
JButton bt[]=new JButton[16];
String s="";
boolean start;
Double number1;
char op='=';

Caculate(String string)
{

super(string);
p1.add(tf);
p2.setLayout(new GridLayout(4,4,2,2));
String s="789+456-123*0.=/";
char c;
int i;
for (i=0;i<bt.length;i++)
{
c=s.charAt(i);
bt=new JButton(String.valueOf(c));//how to convert?
bt.addActionListener(this);
p2.add(bt);
}

this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(p1,"North");
this.getContentPane().add(p2,"Center");
this.addWindowListener(new liswin());

tf.setHorizontalAlignment(JTextField.RIGHT);
tf.setEditable(false);
tf.setToolTipText("hellow!");
tf.setText("0");
start=true;
}

public static void main(String args[])
{
Caculate cl=new Caculate("Caculater");
Toolkit tk=Toolkit.getDefaultToolkit();
Dimension d=tk.getScreenSize();

cl.setLocation(d.width/4,d.height/4);
cl.setSize(200,200);
cl.show();
}



public void actionPerformed(ActionEvent evt)
{
s=evt.getActionCommand();

if ('0'<=s.charAt(0)&&s.charAt(0)<='9'||s.charAt(0)=='.')
{
start=false;
if (tf.getText().equals(null))
{
tf.setText(s);
}
else
{
tf.setText(tf.getText()+s);
}
}
else if (start==true&&s.equals("-"))
{
tf.setText("-");
start=false;
}

else
{
this.compute(Double.parseDouble(tf.getText()));
op=evt.getActionCommand().charAt(0);
start=true; //prepare for next input number
}
}


public void compute(Double s)
{

switch (op)
{
case ('='):
{
number1=Double.parseDouble(s);
tf.setText(""+number1);
}
case('+'):
{
number1+=Double.parseDouble(s);
tf.setText(""+number1);
}
case('-'):
{
number1-=Double.parseDouble(s);
tf.setText(""+number1);
}
case('*'):
{
number1*=Double.parseDouble(s);
tf.setText(""+number1);
}
case('/'):
{
number1/=Double.parseDouble(s);
tf.setText(""+number1);
}
}
}
}

class liswin extends WindowAdapter
{
public void windowClosing(WindowEvent evt)
{
System.exit(0);
}
}

下面是出现的问题:

--------------------Configuration: j2sdk <Default>--------------------
D:\Program Files\Xinox Software\JCreator Pro\MyProjects\Caculate.java:87: compute(java.lang.Double) in Caculate cannot be applied to (double)
compute(Double.parseDouble(tf.getText())); //compute result when press +-*/=
^
D:\Program Files\Xinox Software\JCreator Pro\MyProjects\Caculate.java:101: parseDouble(java.lang.String) in java.lang.Double cannot be applied to (java.lang.Double)
number1=Double.parseDouble(s);
^
D:\Program Files\Xinox Software\JCreator Pro\MyProjects\Caculate.java:106: parseDouble(java.lang.String) in java.lang.Double cannot be applied to (java.lang.Double)
number1+=Double.parseDouble(s);
^
D:\Program Files\Xinox Software\JCreator Pro\MyProjects\Caculate.java:106: incompatible types
found : java.lang.String
required: java.lang.Double
number1+=Double.parseDouble(s);
^
D:\Program Files\Xinox Software\JCreator Pro\MyProjects\Caculate.java:111: parseDouble(java.lang.String) in java.lang.Double cannot be applied to (java.lang.Double)
number1-=Double.parseDouble(s);
^
D:\Program Files\Xinox Software\JCreator Pro\MyProjects\Caculate.java:116: parseDouble(java.lang.String) in java.lang.Double cannot be applied to (java.lang.Double)
number1*=Double.parseDouble(s);
^
D:\Program Files\Xinox Software\JCreator Pro\MyProjects\Caculate.java:121: parseDouble(java.lang.String) in java.lang.Double cannot be applied to (java.lang.Double)
number1/=Double.parseDouble(s);
^
7 errors

Process completed.

这到底是怎么回事啊?多谢了!
...全文
51 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
superlch 2002-05-12
  • 打赏
  • 举报
回复
不好意思,犯了一些很傻的错误:
程序大体应该是这样的:
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Caculate extends JFrame implements ActionListener
{
JPanel p1=new JPanel();
JPanel p2=new JPanel();
JTextField tf=new JTextField(" ",12);
JButton bt[]=new JButton[16];
String s="";
boolean start;
double number1; //varible number1 is used to store previous input number,or
//previous output number
char op='='; //initiate op as "="


Caculate(String string)
{

super(string);
p1.add(tf);
p2.setLayout(new GridLayout(4,4,2,2));
String s="789+456-123*0.=/";
char c;
int i;
for (i=0;i<bt.length;i++)
{
c=s.charAt(i);
bt[i]=new JButton(String.valueOf(c));//how to convert?
bt[i].addActionListener(this);
p2.add(bt[i]);
}

this.getContentPane().setLayout(new BorderLayout());
this.getContentPane().add(p1,"North");
this.getContentPane().add(p2,"Center");
this.addWindowListener(new liswin());

tf.setHorizontalAlignment(JTextField.RIGHT);
tf.setEditable(false);
tf.setToolTipText("hellow!");
tf.setText("0"); //diaplay initiate 0

start=true;
}

public static void main(String args[])
{
Caculate cl=new Caculate("Caculater");
Toolkit tk=Toolkit.getDefaultToolkit();
Dimension d=tk.getScreenSize();

cl.setLocation(d.width/4,d.height/4);
cl.setSize(200,200);
cl.show();
}



public void actionPerformed(ActionEvent evt)
{
s=evt.getActionCommand();


if ('0'<=s.charAt(0)&&s.charAt(0)<='9'||s.charAt(0)=='.')
//this "if ,else" code segment is use to input double number
{
if (start==true) //when first input number ,diaplay should be ""
{
start=false; //when start==false ,it means number input have began
tf.setText("");
}

if (tf.getText().equals(null))
{
tf.setText(s);
}
else
{
tf.setText(tf.getText()+s);
}
}
else if (start==true&&s.equals("-"))
{
tf.setText("-");
start=false;
}
//above is input double number

else //when press caculate button ,do this
{
compute(Double.parseDouble(tf.getText())); //compute result when press +-*/=
op=evt.getActionCommand().charAt(0); //save next op in varible op
start=true; //prepare for next input number
}
}


public void compute(double s)
{

switch (op)
{
case ('='):
{
number1=s;
tf.setText(""+number1);
break;
}
case('+'):
{
number1+=s;
tf.setText(""+number1);
break;
}
case('-'):
{
number1-=s;
tf.setText(""+number1);
break;
}
case('*'):
{
number1*=s;
tf.setText(""+number1);
break;
}
case('/'):
{
number1/=s;
tf.setText(""+number1);
break;
}
default:

}

}
}






class liswin extends WindowAdapter
{
public void windowClosing(WindowEvent evt)
{
System.exit(0);
}
}


seabase 2002-05-12
  • 打赏
  • 举报
回复
1、bt=new JButton(String.valueOf(c));//how to convert????
bt是数组呀
2、Double.parseDouble(String) return double;
wangwenyou 2002-05-12
  • 打赏
  • 举报
回复
2、Define
double number1;
wangwenyou 2002-05-12
  • 打赏
  • 举报
回复
1、Add
public void compute(double s)
{
this.compute( new Double(s) );
}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧