求解答-程序问题出在小数点构造方法及调用,输入负数出不来,其他的正确

问题描述

程序问题出在小数点构造方法及调用,输入负数出不来,其他的正确

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;
public class UserGUI implements ActionListener
{ private CalcEngine calc;
private JFrame frame;
private JTextField display;
private JLabel status;
public UserGUI(CalcEngine engine)
{ calc=engine;
makeFrame();
frame.setVisible(true); }
public void setVisible(boolean visible)
{ frame.setVisible(visible); }
private void makeFrame()
{ frame=new JFrame(calc.getTitle());
JPanel contentPane=(JPanel)frame.getContentPane();
contentPane.setLayout(new BorderLayout(8,8));
contentPane.setBorder(new EmptyBorder(10,10,10,10));
display=new JTextField();
contentPane.add(display,BorderLayout.NORTH);
JPanel buttonPanel =new JPanel(new GridLayout(0,5));
addButton(buttonPanel,"7");
addButton(buttonPanel,"8");
addButton(buttonPanel,"9");
addButton(buttonPanel,"+");
addButton(buttonPanel,"4");
addButton(buttonPanel,"5");
addButton(buttonPanel,"6");
addButton(buttonPanel,"-");
addButton(buttonPanel,"1");
addButton(buttonPanel,"2");
addButton(buttonPanel,"3");
addButton(buttonPanel,"*");
addButton(buttonPanel,"0");
addButton(buttonPanel,".");
addButton(buttonPanel,"C");
addButton(buttonPanel,"/");
addButton(buttonPanel,"=");
addButton(buttonPanel,"sqrt");
addButton(buttonPanel,"%");
addButton(buttonPanel,"sin");
contentPane.add(buttonPanel,BorderLayout.CENTER);
frame.pack();
}
private void addButton(Container panel,String buttonText)
{ JButton button=new JButton(buttonText);
button.addActionListener(this);
panel.add(button); }
public void actionPerformed(ActionEvent event)
{ String command=event.getActionCommand();
if(command.equals("0"))||
command.equals("1"))||
command.equals("2"))||
command.equals("3"))||
command.equals("4"))||
command.equals("5"))||
command.equals("6"))||
command.equals("7"))||
command.equals("8"))||
command.equals("9"))||
command.equals("."))
{ int number=Integer.parseInt(command);
calc.numberPressed(number); }
else if(command.equals("+")) calc.plus();
else if(command.equals("-")) calc.minus();
else if(command.equals("*")) calc.mul();
else if(command.equals("/")) calc.div();
else if(command.equals("sqrt")) calc.genhao();
else if(command.equals("%")) calc.quyu();
else if(command.equals("C")) calc.clear();
else if(command.equals("=")) calc.equals();
else if(command.equals("sin")) calc.sinzhi();
redisplay();
}
private void redisplay()
{ display.setText(""+calc.getDisplayValue()); }
}

//要用到的类
public class Calculator
{ private CalcEngine engine;
private UserGUI gui;
public Calculator()
{ engine=new CalcEngine();
gui=new UserGUI(engine); }

public void show()
{ gui.setVisible(true); }
public static void main(String a[])
{ Calculator calc=new Calculator();
calc.show(); }
}
class CalcEngine
{ private double number;double result;
final double pi=3.1415926535;
char flag;
boolean isNumber;
public CalcEngine()
{ number=0;
result=0;
flag=' ';
isNumber=true;
}
public double getDisplayValue()
{ return number; }
public void numberPressed(double number)
{ if(isNumber&&this.number!=0)
{ double str1=Double.toDouble(number);
double str2=Double.toDouble(this.number);
this.number=Double.parseDouble(str2+str1);
}
else
{ this.number=number; }
isNumber=true;
}
public void plus()
{ equals();
this.flag='+'; }
public void minus()
{ equals();
this.flag='-'; }
public void mul()
{ equals();
this.flag='*'; }
public void div()
{ equals();
this.flag='/'; }
public void genhao()
{ equals();
this.flag='√'; }
public void quyu()
{ equals();
this.flag='%'; }
public void sinzhi()
{ equals();
this.flag='s'; }
public void dian()
{ equals();
this.flag='.'; }
public double equals()
{ switch(flag)
{ case '+': result=result+number; break;
case '-': result=result-number; break;
case '*': result=result*number; break;
case '/': result=result/number; break;
case '√': result=Math.sqrt( number); break;
case '%': result=result%number; break;
case 's': result= Math.sin(number*pi/180);
break;
case '.': number=(double) number; break; //这里有错
case ' ': result= number; break;
}
return result;
flag=' ';
isNumber=false;
}
public void clear()
{ number=0; result=0; }
public String getTitle()
{ return " calclation example"; }
}

时间: 2024-10-31 04:59:14

求解答-程序问题出在小数点构造方法及调用,输入负数出不来,其他的正确的相关文章

求解答-这个计算器问题出在构造小数点方法以及调用,输入负数出不来

问题描述 这个计算器问题出在构造小数点方法以及调用,输入负数出不来 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.border.*; public class UserGUI implements ActionListener { private CalcEngine calc; private JFrame frame; private JTextField displa

单片机-求解答如何判断OF标志位

问题描述 求解答如何判断OF标志位 1,两个负数相与如何判断? 2,两个同号的数相加如何判断? 3,两个异号的数相加如何判断? 解决方案 简单来说,比如8位数表示范围是-128~127 不管什么数相加还是相减,你先把二进制转换为10进制,然后人为计算,结果在这个范围之外,OF=1,否则OF=0 注意,负数转换为十进制,前面加上负号,符号位以外取反+1 解决方案二: 先要理解负数在内存中是2'补码存储的,也就是正数的二进位码取反加1得到.举个栗子: 8-bit数值+8,和 -8相加: +8 000

java 的一个记事本程序 为什么会出这种错?求解答

问题描述 importjava.awt.BorderLayout;importjava.awt.Container;importjava.awt.FlowLayout;importjava.awt.Font;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.ItemEvent;importjava.awt.event.ItemListener;importjava.i

Android程序新建报错,求解答

问题描述 Android程序新建报错,求解答 最近在学习Android编程,按照教程新建了一个Android工程,发现完成后报出许多错误,但教程上新建完成后就可以运行,由于是新手,不懂到底是哪里出问题了,还请大牛指教,谢谢!!! 解决方案 将ActionBarAcitivity改为Acitivity, 并且将那个support.v7包删了 解决方案二: 看不清楚!这样的问题,我一般是这么干的:一:rebuild project 看是否能行!二:检查build gradle里的资源是否引入!三:完

vb编程-跪求vb程序解答,多谢

问题描述 跪求vb程序解答,多谢 螺旋矩阵 .基本要求 ???输入初始值.步长值.矩阵维数,求出螺旋矩阵并输出 ???分别求出横排矩阵.纵排矩阵 如:初始值是1,步长值是1,矩阵维数是5,如用户选择"横排",则系统输出矩阵如下 3.创新要求 在基本要求达到后,进行创新设计,创新方向提示如下: ★??为某些命令设置快捷键. ★??增加工具栏,工具栏中应有常使用的工具按钮. ★??分别求出左对角矩阵.右对角矩阵

android studio-Android studio 大部分系统方法报红 让我setup jdk 代码提示也出不来 求解答

问题描述 Android studio 大部分系统方法报红 让我setup jdk 代码提示也出不来 求解答 Android studio 大部分系统方法报红 让我setup jdk 代码提示也出不来 求解答 解决方案 前段时间还好好的 今天弄个程序弄一般突然这样了 求大大解答 解决方案二: 我今天也碰到了同样的问题,希望能帮助到你,其实你只要更新你的SDK就可以了,或者你点击右下角的eventlog中报错的信息中的报错信息 系统会判断你应该升级或者安装缺少的组件,你点击就行了.我就是这样解决问

java-这个程序总是报错,求解答

问题描述 这个程序总是报错,求解答 //以utf-8的格式读取文件 //文件-->程序-->字符数组 public static char[] get1(File fi)throws IOException{ char[] ch=null; BufferedReader reader=new BufferedReader( new InputStreamReader( new FileInputStream(fi)," utf-8") ); CharArrayWriter

c++-求解答,问题出在那里,木有编译错误

问题描述 求解答,问题出在那里,木有编译错误 // shiyan66.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include"iomanip" #include"iostream" using namespace std; class Employee { public: Employee(const long n,const char* N){number=n,*name=*N;}; virtu

matlab程序进不了if语句,求解答

问题描述 matlab程序进不了if语句,求解答 t=0.0; dt=0.01; m=0; while(t<=5.0) if(t==1.0) m=m+1; end t=t+dt; end 为什么进不了if语句呢? 解决方案 浮点数的比较应该用两数相减取绝对值小于某个很小的数的方式进行,因为浮点数可能存在误差.