中易网

java 计算器,用float定义num1和num2,为什么总是num1-num2=0.0,而+,*,%的结果都正常???在线求助~~~~~~

答案:2  悬赏:80  
解决时间 2021-03-12 16:16
java 计算器,用float定义num1和num2,为什么总是num1-num2=0.0,而+,*,%的结果都正常???在线求助~~~~~~
最佳答案
把代码贴上来看看。或者把float换成double试试看。
全部回答
import java.awt.*;  import java.awt.event.*;  import java.lang.*;  import javax.swing.*;  public class counter extends frame  {  //声明三个面板的布局  gridlayout gl1,gl2,gl3;  panel p0,p1,p2,p3;  jtextfield tf1;  textfield tf2;  button b0,b1,b2,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26;  checkbox b3,b4,b5,b6; stringbuffer str;//显示屏所显示的字符串  double x,y;//x和y都是运算数  int z;//z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"    public counter()  {  gl1=new gridlayout(1,4,10,0);//实例化三个面板的布局  gl2=new gridlayout(4,1,0,15);  gl3=new gridlayout(4,5,10,15);  tf1=new jtextfield(27);//显示屏  tf1.sethorizontalalignment(jtextfield.right);  tf1.setenabled(false);  tf1.settext("0");  tf2=new textfield(10);//显示记忆的索引值  tf2.seteditable(false);  //实例化所有按钮、设置其前景色并注册监听器  b0=new button("backspace");  b0.setforeground(color.red);  b0.addactionlistener(new bt());  b1=new button("ce");  b1.setforeground(color.red);  b1.addactionlistener(new bt());  b2=new button("c");  b2.setforeground(color.red);  b2.addactionlistener(new bt()); checkbox radio[]=new checkbox[4]; checkboxgroup cbgroup=new checkboxgroup();//创建单选框 b3=new checkbox("2进制",cbgroup,false); b3.addactionlistener(new bt()); b4=new checkbox("8进制",cbgroup,false); b4.addactionlistener(new bt()); b5=new checkbox("16进制",cbgroup,false); b5.addactionlistener(new bt()); b6=new checkbox("10进制",cbgroup,false); b6.addactionlistener(new bt()); b7=new button("7");  b7.setforeground(color.blue);  b7.addactionlistener(new bt());  b8=new button("8");  b8.setforeground(color.blue);  b8.addactionlistener(new bt());  b9=new button("9");  b9.setforeground(color.blue);  b9.addactionlistener(new bt());  b10=new button("/");  b10.setforeground(color.red);  b10.addactionlistener(new bt());  b11=new button("sqrt");  b11.setforeground(color.blue);  b11.addactionlistener(new bt());  b12=new button("4");  b12.setforeground(color.blue);  b12.addactionlistener(new bt());  b13=new button("5");  b13.setforeground(color.blue);  b13.addactionlistener(new bt());  b14=new button("6");  b14.setforeground(color.blue);  b14.addactionlistener(new bt());  b15=new button("*");  b15.setforeground(color.red);  b15.addactionlistener(new bt());  b16=new button("%");  b16.setforeground(color.blue);  b16.addactionlistener(new bt());  b17=new button("1");  b17.setforeground(color.blue);  b17.addactionlistener(new bt());  b18=new button("2");  b18.setforeground(color.blue);  b18.addactionlistener(new bt());  b19=new button("3");  b19.setforeground(color.blue);  b19.addactionlistener(new bt());  b20=new button("-");  b20.setforeground(color.red);  b20.addactionlistener(new bt());  b21=new button("1/x");  b21.setforeground(color.blue);  b21.addactionlistener(new bt());  b22=new button("0");  b22.setforeground(color.blue);  b22.addactionlistener(new bt());  b23=new button("+/-");  b23.setforeground(color.blue);  b23.addactionlistener(new bt());  b24=new button(".");  b24.setforeground(color.blue);  b24.addactionlistener(new bt());  b25=new button("+");  b25.setforeground(color.red);  b25.addactionlistener(new bt());  b26=new button("=");  b26.setforeground(color.red);  b26.addactionlistener(new bt());  //实例化四个面板  p0=new panel();  p1=new panel();  p2=new panel();  p3=new panel();  //创建一个空字符串缓冲区  str=new stringbuffer();  //添加面板p0中的组件和设置其在框架中的位置和大小  p0.add(tf1);  p0.setbounds(10,25,300,40);  //添加面板p1中的组件和设置其在框架中的位置和大小  p1.setlayout(gl1);  p1.add(tf2);  p1.add(b0);  p1.add(b1);  p1.add(b2);  p1.setbounds(10,65,300,25);  //添加面板p2中的组件并设置其的框架中的位置和大小  //p2.setlayout(gl2);  p2.add(b3);  p2.add(b4);  p2.add(b5);  p2.add(b6);  //p2.setbounds(10,110,40,150);  //添加面板p3中的组件并设置其在框架中的位置和大小  p3.setlayout(gl3);//设置p3的布局  p3.add(b7);  p3.add(b8);  p3.add(b9);  p3.add(b10);  p3.add(b11);  p3.add(b12);  p3.add(b13);  p3.add(b14);  p3.add(b15);  p3.add(b16);  p3.add(b17);  p3.add(b18);  p3.add(b19);  p3.add(b20);  p3.add(b21);  p3.add(b22);  p3.add(b23);  p3.add(b24);  p3.add(b25);  p3.add(b26);  p3.setbounds(60,110,250,150);  //设置框架中的布局为空布局并添加4个面板  setlayout(null);  add(p0);  add(p1);  add(p2);  add(p3);  setresizable(false);//禁止调整框架的大小  //匿名类关闭窗口  addwindowlistener(new windowadapter(){  public void windowclosing(windowevent e1)  {  system.exit(0);  }  });  setbackground(color.pink);  setbounds(100,100,320,280);  setvisible(true);  }  //构造监听器  class bt implements actionlistener  {  public void actionperformed(actionevent e2)  {  try{  if(e2.getsource()==b1)//选择"ce"清零  {  tf1.settext("0");//把显示屏清零  str.setlength(0);//清空字符串缓冲区以准备接收新的输入运算数  }  else if(e2.getsource()==b2)//选择"c"清零  {  tf1.settext("0");//把显示屏清零  str.setlength(0);  }  else if(e2.getsource()==b23)//单击"+/-"选择输入的运算数是正数还是负数  {  x=double.parsedouble(tf1.gettext().trim());  tf1.settext(""+(-x));  }  else if(e2.getsource()==b25)//单击加号按钮获得x的值和z的值并清空y的值  {  x=double.parsedouble(tf1.gettext().trim());  str.setlength(0);//清空缓冲区以便接收新的另一个运算数  y=0d;  z=0;  }  else if(e2.getsource()==b20)//单击减号按钮获得x的值和z的值并清空y的值  {  x=double.parsedouble(tf1.gettext().trim());  str.setlength(0);  y=0d;  z=1;  }  else if(e2.getsource()==b15)//单击乘号按钮获得x的值和z的值并清空y的值  {  x=double.parsedouble(tf1.gettext().trim());  str.setlength(0);  y=0d;  z=2;  }  else if(e2.getsource()==b10)//单击除号按钮获得x的值和z的值并空y的值  {  x=double.parsedouble(tf1.gettext().trim());  str.setlength(0);  y=0d;  z=3;  }  else if(e2.getsource()==b26)//单击等号按钮输出计算结果  {  str.setlength(0);  switch(z)  {  case 0 : tf1.settext(""+(x+y));break;  case 1 : tf1.settext(""+(x-y));break;  case 2 : tf1.settext(""+(x*y));break;  case 3 : tf1.settext(""+(x/y));break;  }  }  else if(e2.getsource()==b24)//单击"."按钮输入小数  {  if(tf1.gettext().trim().indexof('.')!=-1)//判断字符串中是否已经包含了小数点  {  }  else//如果没数点有小  {  if(tf1.gettext().trim().equals("0"))//如果初时显示为0  {  str.setlength(0);  tf1.settext((str.append("0"+e2.getactioncommand())).tostring());  }  else if(tf1.gettext().trim().equals(""))//如果初时显示为空则不做任何操作  {  }  else  {  tf1.settext(str.append(e2.getactioncommand()).tostring());  }  }  y=0d;  }  else if(e2.getsource()==b11)//求平方根  {  x=double.parsedouble(tf1.gettext().trim());  tf1.settext("数字格式异常");  if(x<0)  tf1.settext("负数没有平方根");  else  tf1.settext(""+math.sqrt(x));  str.setlength(0);  y=0d;  }  else if(e2.getsource()==b16)//单击了"%"按钮  {  x=double.parsedouble(tf1.gettext().trim());  tf1.settext(""+(0.01*x));  str.setlength(0);  y=0d;  }  else if(e2.getsource()==b21)//单击了"1/x"按钮  {  x=double.parsedouble(tf1.gettext().trim());  if(x==0)  {  tf1.settext("除数不能为零");  }  else  {  tf1.settext(""+(1/x));  }  str.setlength(0);  y=0d;  }  else if(e2.getsource()==b3)//二进制 {  int n=integer.parseinteger(tf1.gettext().trim());  tf1.settext(integer.tobinarystring(n));  }  else if(e2.getsource()==b4)//八进制  {  int n=integer.parseinteger(tf1.gettext().trim());  tf1.settext(integer.tooctalstring(n));  }  else if(e2.getsource()==b5)//十六进抽  {  int n=integer.parseinteger(tf1.gettext().trim());   tf1.settext(integer.tohexstring(n));   }  else if(e2.getsource()==b6)//十进制 {    int n=integer.parseinteger(tf1.gettext().trim());    tf1.settext(integer.tobinarystring(n));  }  else//选择的是其他的按钮  {  if(e2.getsource()==b22)//如果选择的是"0"这个数字键  {  if(tf1.gettext().trim().equals("0"))//如果显示屏显示的为零不做操作  {  }  else  {  tf1.settext(str.append(e2.getactioncommand()).tostring());  y=double.parsedouble(tf1.gettext().trim());  }  }  else if(e2.getsource()==b0)//选择的是“backspace”按钮  {  if(!tf1.gettext().trim().equals("0"))//如果显示屏显示的不是零  {  if(str.length()!=1)  {  tf1.settext(str.delete(str.length()-1,str.length()).tostring());//可能抛出字符串越界异常  }  else  {  tf1.settext("0");  str.setlength(0);  }  }  y=double.parsedouble(tf1.gettext().trim());  }  else//其他的数字键  {  tf1.settext(str.append(e2.getactioncommand()).tostring());  y=double.parsedouble(tf1.gettext().trim());  }  }  }  catch(numberformatexception e){  tf1.settext("数字格式异常");  }  catch(stringindexoutofboundsexception e){  tf1.settext("字符串索引越界");  }  }  }  public static void main(string args[])  {  new counter();  }  }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
1.亡了国当了奴隶的人民,只要牢牢记住他们的
怎么维护肖像权
一个自然数不是奇数就是偶数这个是对还是错
九乡风景区在哪里啊,我有事要去这个地方
名词解释:谱线增宽
恒泰纺织怎么去啊,有知道地址的么
怎么瘦唇或让嘴唇变薄
佟丽娅早年有哪些经历?
为什么出了山西就找不到 福云 这烟了
我是湖南师范大学得一名大一学生 是物理系的
草格庄村怎么去啊,有知道地址的么
求YY后宫小说,无无漏女,无郁闷的
行尸走肉第三季12 为什么不救那个旅行者 还有
火车t302特快准点到终点吗1
饥荒游戏中编辑世界中,犀牛是张什么样
推荐资讯
合源堂在哪里啊,我有事要去这个地方
粗粮细做我想知道这个在什么地方
什么样的马克笔颜色比较好,价钱不是很贵,不
申请美国大学 phd该怎么算成绩
有什么歌适合低音域的女生唱。- -重点是好听
三七果在哪里可以加工成粉?费用如何收取?
双椒鱼王自助火锅城我想知道这个在什么地方
武汉市彤江医疗器械有限公司地址在什么地方,
大航海时代ol安平怎么接不了任务
中国石化信丰盛达加油站怎么去啊,有知道地址
猎豹CS10的车开2500公里可以卖多少钱
生活过得有意义怎么形容
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?