首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

哪位高手能不能把这段代码给仔细的说明一下吗?多谢大家了

2012-01-31 
谁能不能把这段代码给仔细的说明一下吗?谢谢大家了!谁能不能把这段代码给仔细的说明一下吗?谢谢大家了!imp

谁能不能把这段代码给仔细的说明一下吗?谢谢大家了!
谁能不能把这段代码给仔细的说明一下吗?谢谢大家了!


import   java.awt.*;
import   java.awt.event.*;
public   class   Calculator   extends   WindowAdapter   implements   ActionListener
{
private   double   result=0,data1=0,radixPointDepth=1;
private   boolean   radixPointIndicate=false,resultIndicate=false;
private   char   prec= '+ ';
private   Frame   f;
private   TextField   tf;
private   Button   b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17;
private   Panel   p;
static   public   void   main(String   args[])
{
Calculator   de=new   Calculator();
de.go();
}
public   void   go()
{
f=new   Frame( "计算器 ");
p=new   Panel();
p.setLayout(new   GridLayout(4,4));
tf=new   TextField(30);
b1=new   Button( "7 ");
b2=new   Button( "8 ");
b3=new   Button( "9 ");
b4=new   Button( "+ ");
b5=new   Button( "4 ");
b6=new   Button( "5 ");
b7=new   Button( "6 ");
b8=new   Button( "- ");
b9=new   Button( "1 ");
b10=new   Button( "2 ");
b11=new   Button( "3 ");
b12=new   Button( "* ");
b13=new   Button( "0 ");
b14=new   Button( ". ");
b15=new   Button( "= ");
b16=new   Button( "/ ");
b17=new   Button( "清零 ");
f.add(tf, "North ");
f.add(p, "Center ");
f.add(b17, "South ");
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
p.add(b6);
p.add(b7);
p.add(b8);
p.add(b9);
p.add(b10);
p.add(b11);
p.add(b12);
p.add(b13);
p.add(b14);
p.add(b15);
p.add(b16);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);
b10.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b14.addActionListener(this);
b15.addActionListener(this);
b16.addActionListener(this);
b17.addActionListener(this);
f.addWindowListener(this);
f.setSize(250,190);
f.setVisible(true);
}
public   void   actionPerformed(ActionEvent   e)
{
String   s;
s=e.getActionCommand();
switch(s.charAt(0))
{
case   '0 ':   case   '1 ':   case   '2 ':   case   '3 ':   case   '4 ':   case   '5 ':   case   '6 ':   case   '7 ':   case   '8 ':   case   '9 ':
if(resultIndicate)
{
result=0;
data1=0;
prec= '+ ';
}
Integer   Int1=new   Integer(s);
if(radixPointIndicate)
{
radixPointDepth=radixPointDepth/10;
data1=data1+(Int1.intValue())*radixPointDepth;
}
else
{
data1=data1*10+(Int1.intValue());
}
Double   displayNumber=new   Double(data1);
tf.setText(displayNumber.toString());
resultIndicate=false;
break;
case   '+ ':   case   '- ':case   '* ':case   '/ ':case   '= ':


if(s.charAt(0)!= '= '&&resultIndicate)
{
prec=s.charAt(0);
resultIndicate=false;
}
else
{
switch(prec)
{
case   '+ ':
result=result+data1;
break;
case   '- ':
result=result-data1;
break;
case   '* ':
result=result*data1;
break;
case   '/ ':
result=result/data1;
break;
}
}
radixPointIndicate=false;
radixPointDepth=1;
displayNumber=new   Double(result);
tf.setText(displayNumber.toString());
if(s.charAt(0)!= '= ')
{
data1=0;
prec=s.charAt(0);
}
else
{
resultIndicate=true;
}
break;
case   '. ':
radixPointIndicate=true;
break;
}
if(s.equals( "清零 "))
{
result=0;
data1=0;
radixPointDepth=1;
tf.setText( " ");
}
}
public   void   windowClosing(WindowEvent   e)
{
System.exit(0);
}
}


[解决办法]
我没去看它的算法...水平太差...只是加些自己能了解的注释
____________________________________________________________________
import java.awt.*;
import java.awt.event.*;
/*计算器的窗口应用程序*/
public class Calculator extends WindowAdapter implements ActionListener
{
/* @result 结果 */
/* @data1 中间数 */
/* @radixPointDepth 不明白*/
/*radixPointIndicate=false,resultIndicate=false
估计是计算符号是否选了吧..第二个是结果计算出来没
*/

private double result=0,data1=0,radixPointDepth=1;
private boolean radixPointIndicate=false,resultIndicate=false;
private char prec= '+ '; //这里把它当连接符号还是计算符号啊?
private Frame f; //窗口
private TextField tf; //文本输入框
/*一些按钮*/
private Button b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17;
/*容器*/
private Panel p;
/*程序入口*/
static public void main(String args[])
{
//这....
Calculator de=new Calculator();
de.go();
}
public void go()
{
/*初始化*/
f=new Frame( "计算器 ");
p=new Panel();
p.setLayout(new GridLayout(4,4)); //设置Panel的布局方式为网格4X4
tf=new TextField(30); //初始化文本输入框
/*初始化计算器的一些按钮,根据传进去的标识理解*/
b1=new Button( "7 ");
b2=new Button( "8 ");
b3=new Button( "9 ");
b4=new Button( "+ ");
b5=new Button( "4 ");
b6=new Button( "5 ");
b7=new Button( "6 ");
b8=new Button( "- ");
b9=new Button( "1 ");
b10=new Button( "2 ");
b11=new Button( "3 ");
b12=new Button( "* ");
b13=new Button( "0 ");
b14=new Button( ". ");
b15=new Button( "= ");
b16=new Button( "/ ");
b17=new Button( "清零 ");
/*往窗口里放Panel <p> ..输入文本框 <tf> 清0的按钮 <b17> */
f.add(tf, "North ");
f.add(p, "Center ");
f.add(b17, "South ");
/*望在窗口CENTER的Panel里加按钮*/
p.add(b1);
p.add(b2);
p.add(b3);
p.add(b4);
p.add(b5);
p.add(b6);
p.add(b7);
p.add(b8);
p.add(b9);
p.add(b10);
p.add(b11);
p.add(b12);
p.add(b13);
p.add(b14);
p.add(b15);
p.add(b16);
/*给每个按钮加事件监听*/
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
b4.addActionListener(this);
b5.addActionListener(this);
b6.addActionListener(this);
b7.addActionListener(this);
b8.addActionListener(this);
b9.addActionListener(this);


b10.addActionListener(this);
b11.addActionListener(this);
b12.addActionListener(this);
b13.addActionListener(this);
b14.addActionListener(this);
b15.addActionListener(this);
b16.addActionListener(this);
b17.addActionListener(this);
/*给窗口加监听*/
f.addWindowListener(this);
/*窗口大小*/
f.setSize(250,190);
/*显示出窗口 */
f.setVisible(true);
}
public void actionPerformed(ActionEvent e)
{
String s;
/*一但按了按钮后..得到那个按钮*/
s=e.getActionCommand();
switch(s.charAt(0))
{
/*如果按的为0-9 数字*/
case '0 ': case '1 ': case '2 ': case '3 ': case '4 ': case '5 ': case '6 ': case '7 ': case '8 ': case '9 ':
/*判断是否已经有结果了*/
if(resultIndicate)
{

result=0; //把结果为0
data1=0; //把中间数为0
prec= '+ '; //符号为+
}
Integer Int1=new Integer(s); //Int 包装类
if(radixPointIndicate)
{
radixPointDepth=radixPointDepth/10;
data1=data1+(Int1.intValue())*radixPointDepth;
}
else
{
data1=data1*10+(Int1.intValue());
}
Double displayNumber=new Double(data1);
tf.setText(displayNumber.toString());
resultIndicate=false;
break;
/*如果按了运算符号*/
case '+ ': case '- ':case '* ':case '/ ':case '= ':
/*如果没有按= 号 而且计算结果没出来*/
if(s.charAt(0)!= '= '&&resultIndicate)
{
//得到它按的
prec=s.charAt(0);
//设置没有结果指示器
resultIndicate=false;
}
/*接上 那么判断它按的符号根据符号计算结果*/
else
{
switch(prec)
{
case '+ ':
result=result+data1;
break;
case '- ':
result=result-data1;
break;
case '* ':
result=result*data1;
break;
case '/ ':
result=result/data1;
break;
}
}
radixPointIndicate=false;
radixPointDepth=1;
displayNumber=new Double(result);

tf.setText(displayNumber.toString());
if(s.charAt(0)!= '= ')
{
data1=0;
prec=s.charAt(0);
}
else
{
resultIndicate=true;
}
break;
case '. ':
radixPointIndicate=true;
break;
}
if(s.equals( "清零 "))
{
result=0;
data1=0;
radixPointDepth=1;
tf.setText( " ");
}
}
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
}

[解决办法]
剩下那几句就是转换数据类型,赋值了

热点排行