
3个回答
展开全部
//c++下的计算器源代码
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <iostream> //输入输出流
#define N 11 //表达式长度,以字符数组实现,有效位19个
//由于不会把数字与操作符同时存入一个数组,所以有如下定义:
// -11 代表 (
// -12 代表 )
// -13 代表 +
// -14 代表 -
// -15 代表 *
// -16 代表 /
float a[N]={3,-13,-11,5,-15,4,-13,3,-14,6,-12};//表达式
int n=10; //表达式的实际长度,以全局变量形式
int p=0; //指向前括号,或表达式头部
int at=10; //指向后括号,或表达式尾部
int m=10; //扫描标志位
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//类定义
class calculate
{public:
void mov(int sign); //////运算后,或去括号后,表达式左移
void gover( ); //扫描函数扫扫描“()”,如果扫描到“()”就计算其中的值,
//没有扫到就直接进行计算表达式值
void jisuan(int &a,int &b); //主要的计算函数
};//类定义结束
//表达式为:3+(5*4+3-6)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//move 函数
void calculate::mov(int sign)
{
//出现了(1+5)这样的情况,要变成(6)**,注:**是原先)的后继元素
for (int j=0;sign+j<=n-2;j++)
a[sign+j]= a[sign+j+2]; //元素依次前移
n-=2; //表长减2
at-=2; //指向后括的标志随着)前移
}//move结束
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//jisuan函数
void calculate::jisuan(int &at,int &p)
{
for (int i=at;p!=i ;i--) //乘法,除法运算
{
if (a[i]==-15.000000)//出现乘法
{
a[i-1]=a[i-1]*a[i+1];
mov(i);
} //if over
if (a[i]==-16.000000) //出现除法
{a[i-1]=a[i-1]/a[i+1];
mov(i);
}// if over
} //for over //乘法,除法运算结束
for (int j=at;p!=j ;j--) //加减运算
{
if (a[j]==-13.000000) //出现加法
{
a[j-1]=a[j-1]+a[j+1];
mov(j);
}// if over
if (a[j]==-14.000000) //出现除法
{
a[j-1]=a[j-1]-a[j+1];
mov(j);
}//if over
}//for over加减运算结束
if (p!=0)
{if (p+2==at) //出现(5)的情况,就去括号
{
a[p]=a[p+1];
for (int j=0;p+j<=n-3;j++) //前移两个单位
a[p+j+1]= a[p+j+3]; //向前付值
n-=2; //表长减2
p=0; //去掉括号后指明针回到头尾
at=n; //去掉括号后,尾指
} // if (p+2==at) 结束
} //if (p!=0) 结束
m=n+1; //给M补1
}//jisuan完
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//扫描函数
void calculate::gover( )
{ //m用来指示下标变化,每次发生移位后,都要把新的n值付给m,即第次//移位后,要从尾开重新扫描
for ( ; m>=0; m-- )
{
if (a[m]==-12.000000 ) //出现“)”
{
at=m; //用at标记住“)”的下标
}
if (a[m]==-11.000000) //出现“(”
{p=m; //用p标记住“(”的下标,连续出现了(),计算()内的表达式值
jisuan(at,p) ;
}//if 完
}//扫描()结束
//如果没有()则直接调用jisuan( )
//把两个指针放回到表达式的首尾,
jisuan(at,p);
}//gover结束
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main() //主调函数
{calculate example; //创建一个对象
example.gover( ); //对象调用gover
printf("%f",a[0]);//计算完毕,输出结果
return 0;
}
//改进目标:第一,实现用户输入运算表达式
// 第二,实现对表达式的正确性进行扫描
//第三,用Mfc把用户界面设计出来
//
//存在的问题:
//第一,参数传递中有很多不理解的东西
//第二,由于第一个原因p,at迫于无奈做成了全局的变量,因为全局变量过多
//第三,结构化程序不够高,没有把面向对象的思想最大的发挥出来
//针对以上三点,下一步努力改进
======================
还有一个:
# include <windows.h>
long WINAPI CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hinst,HINSTANCE phinst,
PSTR cmdline,int cmdshow)
{
//the application's name
static CHAR Appname[] = TEXT("HexCalc");
//---------------------------------------
HWND hwnd;
MSG msg;
// window class create
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = DLGWINDOWEXTRA;
wndclass.hInstance = hinst;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = Appname;
//---------------------------------------
//create and show window
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("This program requires Windows NT!"),
Appname,MB_ICONHAND);
return 0;
}
hwnd = CreateDialog(hinst,Appname,0,NULL);
ShowWindow(hwnd,cmdshow);
UpdateWindow(hwnd);
//------------------------------------------------
//send message
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//------------------------------------------------
return msg.wParam;
}
void ShowNumber(HWND hwnd,UINT iNumber)
{
char szBuffer[20];
wsprintf(szBuffer,TEXT("%X"),iNumber);
SetDlgItemText(hwnd,VK_ESCAPE,szBuffer);
}
DWORD Calclt(UINT iFirstNum,int iOperation,UINT iNum)
{
switch(iOperation)
{
case '=':
return iNum;
case '+':
return iFirstNum + iNum;
case '-':
return iFirstNum - iNum;
case '*':
return iFirstNum * iNum;
case '&':
return iFirstNum & iNum;
case '|':
return iFirstNum | iNum;
case '^':
return iFirstNum ^ iNum;
case '<':
return iFirstNum << iNum;
case '>':
return iFirstNum >> iNum;
case '/':
return iNum ? iFirstNum / iNum : MAXDWORD;
case '%':
return iNum ? iFirstNum % iNum : MAXDWORD;
default:
return 0;
}
}
long WINAPI CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static BOOL bNewNumber = TRUE;
static int iOperation = '=';
static UINT iNumber,iFirstNum;
HWND hButton;
//message list or procces
switch(message)
{
case WM_KEYDOWN:
if(wParam != VK_LEFT)
break;
wParam = VK_BACK;
case WM_CHAR:
if((wParam = (WPARAM)CharUpper((char*)wParam)) == VK_RETURN)
wParam = '=';
if(hButton = GetDlgItem(hwnd,wParam))
{
SendMessage(hButton,BM_SETSTATE,1,0);
Sleep(100);
SendMessage(hButton,BM_SETSTATE,0,0);
}
else
{
MessageBeep(0);
break;
}
case WM_COMMAND:
SetFocus(hwnd);
if(LOWORD(wParam) == VK_BACK)
ShowNumber(hwnd,iNumber /= 16);
else if(LOWORD(wParam) == VK_ESCAPE)
ShowNumber(hwnd,iNumber = 0);
else if(isxdigit(LOWORD(wParam)))
{
if(bNewNumber)
{
iFirstNum = iNumber;
iNumber = 0;
}
bNewNumber = FALSE;
if(iNumber <= MAXDWORD >> 4)
ShowNumber(hwnd,iNumber = 16 * iNumber + wParam -
(isdigit(wParam) ? '0' : 'A' - 10));
else
MessageBeep(0);
}
else
{
if(!bNewNumber)
ShowNumber(hwnd,iNumber = Calclt(iFirstNum,iOperation,iNumber));
bNewNumber = TRUE;
iOperation = LOWORD(wParam);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
//-----------------------------------------
return DefWindowProc(hwnd,message,wParam,lParam);
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <iostream> //输入输出流
#define N 11 //表达式长度,以字符数组实现,有效位19个
//由于不会把数字与操作符同时存入一个数组,所以有如下定义:
// -11 代表 (
// -12 代表 )
// -13 代表 +
// -14 代表 -
// -15 代表 *
// -16 代表 /
float a[N]={3,-13,-11,5,-15,4,-13,3,-14,6,-12};//表达式
int n=10; //表达式的实际长度,以全局变量形式
int p=0; //指向前括号,或表达式头部
int at=10; //指向后括号,或表达式尾部
int m=10; //扫描标志位
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//类定义
class calculate
{public:
void mov(int sign); //////运算后,或去括号后,表达式左移
void gover( ); //扫描函数扫扫描“()”,如果扫描到“()”就计算其中的值,
//没有扫到就直接进行计算表达式值
void jisuan(int &a,int &b); //主要的计算函数
};//类定义结束
//表达式为:3+(5*4+3-6)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//move 函数
void calculate::mov(int sign)
{
//出现了(1+5)这样的情况,要变成(6)**,注:**是原先)的后继元素
for (int j=0;sign+j<=n-2;j++)
a[sign+j]= a[sign+j+2]; //元素依次前移
n-=2; //表长减2
at-=2; //指向后括的标志随着)前移
}//move结束
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//jisuan函数
void calculate::jisuan(int &at,int &p)
{
for (int i=at;p!=i ;i--) //乘法,除法运算
{
if (a[i]==-15.000000)//出现乘法
{
a[i-1]=a[i-1]*a[i+1];
mov(i);
} //if over
if (a[i]==-16.000000) //出现除法
{a[i-1]=a[i-1]/a[i+1];
mov(i);
}// if over
} //for over //乘法,除法运算结束
for (int j=at;p!=j ;j--) //加减运算
{
if (a[j]==-13.000000) //出现加法
{
a[j-1]=a[j-1]+a[j+1];
mov(j);
}// if over
if (a[j]==-14.000000) //出现除法
{
a[j-1]=a[j-1]-a[j+1];
mov(j);
}//if over
}//for over加减运算结束
if (p!=0)
{if (p+2==at) //出现(5)的情况,就去括号
{
a[p]=a[p+1];
for (int j=0;p+j<=n-3;j++) //前移两个单位
a[p+j+1]= a[p+j+3]; //向前付值
n-=2; //表长减2
p=0; //去掉括号后指明针回到头尾
at=n; //去掉括号后,尾指
} // if (p+2==at) 结束
} //if (p!=0) 结束
m=n+1; //给M补1
}//jisuan完
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//扫描函数
void calculate::gover( )
{ //m用来指示下标变化,每次发生移位后,都要把新的n值付给m,即第次//移位后,要从尾开重新扫描
for ( ; m>=0; m-- )
{
if (a[m]==-12.000000 ) //出现“)”
{
at=m; //用at标记住“)”的下标
}
if (a[m]==-11.000000) //出现“(”
{p=m; //用p标记住“(”的下标,连续出现了(),计算()内的表达式值
jisuan(at,p) ;
}//if 完
}//扫描()结束
//如果没有()则直接调用jisuan( )
//把两个指针放回到表达式的首尾,
jisuan(at,p);
}//gover结束
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int main() //主调函数
{calculate example; //创建一个对象
example.gover( ); //对象调用gover
printf("%f",a[0]);//计算完毕,输出结果
return 0;
}
//改进目标:第一,实现用户输入运算表达式
// 第二,实现对表达式的正确性进行扫描
//第三,用Mfc把用户界面设计出来
//
//存在的问题:
//第一,参数传递中有很多不理解的东西
//第二,由于第一个原因p,at迫于无奈做成了全局的变量,因为全局变量过多
//第三,结构化程序不够高,没有把面向对象的思想最大的发挥出来
//针对以上三点,下一步努力改进
======================
还有一个:
# include <windows.h>
long WINAPI CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM);
int WINAPI WinMain(HINSTANCE hinst,HINSTANCE phinst,
PSTR cmdline,int cmdshow)
{
//the application's name
static CHAR Appname[] = TEXT("HexCalc");
//---------------------------------------
HWND hwnd;
MSG msg;
// window class create
WNDCLASS wndclass;
wndclass.style = CS_HREDRAW | CS_VREDRAW;
wndclass.lpfnWndProc = WndProc;
wndclass.cbClsExtra = 0;
wndclass.cbWndExtra = DLGWINDOWEXTRA;
wndclass.hInstance = hinst;
wndclass.hIcon = LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor = LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1);
wndclass.lpszMenuName = NULL;
wndclass.lpszClassName = Appname;
//---------------------------------------
//create and show window
if(!RegisterClass(&wndclass))
{
MessageBox(NULL,TEXT("This program requires Windows NT!"),
Appname,MB_ICONHAND);
return 0;
}
hwnd = CreateDialog(hinst,Appname,0,NULL);
ShowWindow(hwnd,cmdshow);
UpdateWindow(hwnd);
//------------------------------------------------
//send message
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
//------------------------------------------------
return msg.wParam;
}
void ShowNumber(HWND hwnd,UINT iNumber)
{
char szBuffer[20];
wsprintf(szBuffer,TEXT("%X"),iNumber);
SetDlgItemText(hwnd,VK_ESCAPE,szBuffer);
}
DWORD Calclt(UINT iFirstNum,int iOperation,UINT iNum)
{
switch(iOperation)
{
case '=':
return iNum;
case '+':
return iFirstNum + iNum;
case '-':
return iFirstNum - iNum;
case '*':
return iFirstNum * iNum;
case '&':
return iFirstNum & iNum;
case '|':
return iFirstNum | iNum;
case '^':
return iFirstNum ^ iNum;
case '<':
return iFirstNum << iNum;
case '>':
return iFirstNum >> iNum;
case '/':
return iNum ? iFirstNum / iNum : MAXDWORD;
case '%':
return iNum ? iFirstNum % iNum : MAXDWORD;
default:
return 0;
}
}
long WINAPI CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{
static BOOL bNewNumber = TRUE;
static int iOperation = '=';
static UINT iNumber,iFirstNum;
HWND hButton;
//message list or procces
switch(message)
{
case WM_KEYDOWN:
if(wParam != VK_LEFT)
break;
wParam = VK_BACK;
case WM_CHAR:
if((wParam = (WPARAM)CharUpper((char*)wParam)) == VK_RETURN)
wParam = '=';
if(hButton = GetDlgItem(hwnd,wParam))
{
SendMessage(hButton,BM_SETSTATE,1,0);
Sleep(100);
SendMessage(hButton,BM_SETSTATE,0,0);
}
else
{
MessageBeep(0);
break;
}
case WM_COMMAND:
SetFocus(hwnd);
if(LOWORD(wParam) == VK_BACK)
ShowNumber(hwnd,iNumber /= 16);
else if(LOWORD(wParam) == VK_ESCAPE)
ShowNumber(hwnd,iNumber = 0);
else if(isxdigit(LOWORD(wParam)))
{
if(bNewNumber)
{
iFirstNum = iNumber;
iNumber = 0;
}
bNewNumber = FALSE;
if(iNumber <= MAXDWORD >> 4)
ShowNumber(hwnd,iNumber = 16 * iNumber + wParam -
(isdigit(wParam) ? '0' : 'A' - 10));
else
MessageBeep(0);
}
else
{
if(!bNewNumber)
ShowNumber(hwnd,iNumber = Calclt(iFirstNum,iOperation,iNumber));
bNewNumber = TRUE;
iOperation = LOWORD(wParam);
}
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
}
//-----------------------------------------
return DefWindowProc(hwnd,message,wParam,lParam);
}
展开全部
我写的,你看看咋样~~
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* @author 李政劭
* 一个简单地计算器
*/
public class Caculator extends JPanel{
private static final long serialVersionUID = 1L;
private JButton buttonDvision,buttonPlus,buttonMinus;
private JButton buttonD,buttonEqual,buttonNC,buttonMupl;
private JButton[] buttons = new JButton[10];
private JTextField field;
private String x = "0";
private String y = "0";
private String numbers = "";
private String symbol;
private double answer = 0;
private boolean exist = false;
public static void main(String args[]){
GUI();
}
public static void GUI(){
JFrame frame = new JFrame("caculator");
frame.setContentPane(new Caculator());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public Caculator(){
JPanel panelLeft = new JPanel();
JPanel panelRight = new JPanel();
JPanel panelUp = new JPanel();
for(int i = 9 ; i >= 0 ; i--){
int j = i;
if(i % 3 == 0 && i >= 3){
j = j - 2;
}
if((i + 2) % 3 == 0 ){
j =j + 2;
}
buttons[i] = new JButton("" + j);
panelLeft.add(buttons[i]);
}
panelLeft.setLayout(new GridLayout(4, 3));
panelRight.setLayout(new GridLayout(4, 1));
buttonD = new JButton(".");
buttonEqual = new JButton("=");
buttonPlus = new JButton("+");
buttonMinus = new JButton("-");
buttonMupl = new JButton("*");
buttonDvision = new JButton("%");
buttonNC = new JButton("NC");
field = new JTextField("0.0",14);
field.setVisible(true);
field.setEditable(false);
for(int i = 0 ; i < 10 ; i++){
buttons[i].addActionListener(new ListenerNumber());
}
buttonD.addActionListener(new ListenerD());
buttonEqual.addActionListener(new ListenerEqual());
buttonPlus.addActionListener(new ListenerSymbol());
buttonMinus.addActionListener(new ListenerSymbol());
buttonMupl.addActionListener(new ListenerSymbol());
buttonDvision.addActionListener(new ListenerSymbol());
buttonNC.addActionListener(new ListenerNC());
panelLeft.add(buttonD);
panelLeft.add(buttonEqual);
panelRight.add(buttonPlus);
panelRight.add(buttonMinus);
panelRight.add(buttonMupl);
panelRight.add(buttonDvision);
panelUp.add(field);
panelUp.add(buttonNC);
setLayout(new BorderLayout());
add(panelLeft,BorderLayout.CENTER);
add(panelRight,BorderLayout.EAST);
add(panelUp,BorderLayout.NORTH);
}
class ListenerNumber implements ActionListener {
public void actionPerformed(ActionEvent event) {
if(event.getSource() instanceof JButton){
JButton actButton = (JButton)(event.getSource());
numbers = numbers + actButton.getText();
field.setText(numbers);
}
}
}
class ListenerD implements ActionListener {
public void actionPerformed(ActionEvent event) {
if(exist == false && numbers != ""){
numbers+=".";
field.setText(numbers);
exist = true;
}
}
}
class ListenerSymbol implements ActionListener {
public void actionPerformed(ActionEvent event) {
if(event.getSource() instanceof JButton){
JButton actButton = (JButton)(event.getSource());
symbol = actButton.getText();
x = field.getText();
field.setText("");
numbers = "";
}
}
}
class ListenerEqual implements ActionListener {
public void actionPerformed(ActionEvent event) {
try{
double a;
double b;
y = field.getText();
a = Double.parseDouble(x);
b = Double.parseDouble(y);
if(symbol == "+"){
answer = a + b;
}else if(symbol == "-"){
answer = a - b;
}else if(symbol == "*"){
answer = a * b;
}else if(symbol == "%"){
answer = a / b;
}else{
answer = b;
}
field.setText("" + answer);
exist = false;
numbers = "";
answer = 0;
symbol = "";
x = "0";
y = "0";
}catch(NumberFormatException e ){
exist = false;
numbers = "";
field.setText("0.0");
answer = 0;
symbol = "";
x = "0";
y = "0";
}
}
}
class ListenerNC implements ActionListener {
public void actionPerformed(ActionEvent event) {
symbol = "";
x = "0";
y = "0";
exist = false;
numbers = "";
field.setText("0.0");
}
}
}
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
/**
* @author 李政劭
* 一个简单地计算器
*/
public class Caculator extends JPanel{
private static final long serialVersionUID = 1L;
private JButton buttonDvision,buttonPlus,buttonMinus;
private JButton buttonD,buttonEqual,buttonNC,buttonMupl;
private JButton[] buttons = new JButton[10];
private JTextField field;
private String x = "0";
private String y = "0";
private String numbers = "";
private String symbol;
private double answer = 0;
private boolean exist = false;
public static void main(String args[]){
GUI();
}
public static void GUI(){
JFrame frame = new JFrame("caculator");
frame.setContentPane(new Caculator());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public Caculator(){
JPanel panelLeft = new JPanel();
JPanel panelRight = new JPanel();
JPanel panelUp = new JPanel();
for(int i = 9 ; i >= 0 ; i--){
int j = i;
if(i % 3 == 0 && i >= 3){
j = j - 2;
}
if((i + 2) % 3 == 0 ){
j =j + 2;
}
buttons[i] = new JButton("" + j);
panelLeft.add(buttons[i]);
}
panelLeft.setLayout(new GridLayout(4, 3));
panelRight.setLayout(new GridLayout(4, 1));
buttonD = new JButton(".");
buttonEqual = new JButton("=");
buttonPlus = new JButton("+");
buttonMinus = new JButton("-");
buttonMupl = new JButton("*");
buttonDvision = new JButton("%");
buttonNC = new JButton("NC");
field = new JTextField("0.0",14);
field.setVisible(true);
field.setEditable(false);
for(int i = 0 ; i < 10 ; i++){
buttons[i].addActionListener(new ListenerNumber());
}
buttonD.addActionListener(new ListenerD());
buttonEqual.addActionListener(new ListenerEqual());
buttonPlus.addActionListener(new ListenerSymbol());
buttonMinus.addActionListener(new ListenerSymbol());
buttonMupl.addActionListener(new ListenerSymbol());
buttonDvision.addActionListener(new ListenerSymbol());
buttonNC.addActionListener(new ListenerNC());
panelLeft.add(buttonD);
panelLeft.add(buttonEqual);
panelRight.add(buttonPlus);
panelRight.add(buttonMinus);
panelRight.add(buttonMupl);
panelRight.add(buttonDvision);
panelUp.add(field);
panelUp.add(buttonNC);
setLayout(new BorderLayout());
add(panelLeft,BorderLayout.CENTER);
add(panelRight,BorderLayout.EAST);
add(panelUp,BorderLayout.NORTH);
}
class ListenerNumber implements ActionListener {
public void actionPerformed(ActionEvent event) {
if(event.getSource() instanceof JButton){
JButton actButton = (JButton)(event.getSource());
numbers = numbers + actButton.getText();
field.setText(numbers);
}
}
}
class ListenerD implements ActionListener {
public void actionPerformed(ActionEvent event) {
if(exist == false && numbers != ""){
numbers+=".";
field.setText(numbers);
exist = true;
}
}
}
class ListenerSymbol implements ActionListener {
public void actionPerformed(ActionEvent event) {
if(event.getSource() instanceof JButton){
JButton actButton = (JButton)(event.getSource());
symbol = actButton.getText();
x = field.getText();
field.setText("");
numbers = "";
}
}
}
class ListenerEqual implements ActionListener {
public void actionPerformed(ActionEvent event) {
try{
double a;
double b;
y = field.getText();
a = Double.parseDouble(x);
b = Double.parseDouble(y);
if(symbol == "+"){
answer = a + b;
}else if(symbol == "-"){
answer = a - b;
}else if(symbol == "*"){
answer = a * b;
}else if(symbol == "%"){
answer = a / b;
}else{
answer = b;
}
field.setText("" + answer);
exist = false;
numbers = "";
answer = 0;
symbol = "";
x = "0";
y = "0";
}catch(NumberFormatException e ){
exist = false;
numbers = "";
field.setText("0.0");
answer = 0;
symbol = "";
x = "0";
y = "0";
}
}
}
class ListenerNC implements ActionListener {
public void actionPerformed(ActionEvent event) {
symbol = "";
x = "0";
y = "0";
exist = false;
numbers = "";
field.setText("0.0");
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
VB我就懂 C++恩。。忘记了 ~
Private Sub Command1_Click()
Text3 = Val(Text1.Text) - Val(Text2.Text)
End Sub
+ - * / 改个符号就好~
Private Sub Command1_Click()
Text3 = Val(Text1.Text) - Val(Text2.Text)
End Sub
+ - * / 改个符号就好~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询