?? listener.java
字號:
c.getDisplay().setText(c.getStr2().toString() + numberChar);
c.setStr2(c.getStr2().append(numberChar));
}
}
private void evaluateDoubleOperator()
{
if(c.getDoubleOperatorFlag() != -1)
return ;
if(c.getRefreshFlag())
{
c.getStr1().setLength(0);
c.getStr1().append(c.getDisplay().getText().toString());
c.setRefreshFlag(false);
}
if(source == c.b[40])c.setDoubleOperatorFlag(1);
else if(source == c.b[34])c.setDoubleOperatorFlag(2);
else if(source == c.b[28])c.setDoubleOperatorFlag(3);
else if(source == c.b[22])c.setDoubleOperatorFlag(4);
else if(source == c.b[7])c.setDoubleOperatorFlag(5);
else if(source == c.b[9])c.setDoubleOperatorFlag(6);
else if(source == c.b[15])c.setDoubleOperatorFlag(7);
else if(source == c.b[16])c.setDoubleOperatorFlag(8);
else if(source == c.b[17])c.setDoubleOperatorFlag(9);
if(c.getStr1().length() != 0)
c.setNewFlag(true);
}
private void doubleCalculate()
{
if(c.getMemoryDisplayFlag())//先按數(shù)字,沒按運算符就按下"MS",則覆蓋原來輸入的數(shù)字
{
c.getDisplay().setText(Double.toString(c.getMemoryValue()));
if(!c.getNewFlag())
{
c.getStr1().setLength(0);
c.getStr1().append(c.getMemoryValue());
}
else
{
c.getStr2().setLength(0);
c.getStr2().append(c.getMemoryValue());
}
c.setMemoryDisplayFlag(false);
}
if(c.getDivZeroFlag())//除數(shù)為0的重新輸入除數(shù)
c.setDoubleOperatorFlag(4);
if(c.getModZeroFlag())//模0的重新輸入
c.setDoubleOperatorFlag(9);
double x = Double.MIN_VALUE;
double y = Double.MIN_VALUE;
double temp = Double.MIN_VALUE;
int n = 0,count = 0;
try
{
x = Double.parseDouble(c.getStr1().toString());
y = Double.parseDouble(c.getStr2().toString());
}
catch(NumberFormatException e){}
if(y == Double.MIN_VALUE)
return ;
switch(c.getDoubleOperatorFlag())
{
case 1:
temp = x + y;
showDoubleResult(temp);
break;
case 2:
temp = x - y;
showDoubleResult(temp);
break;
case 3:
temp = x * y;
showDoubleResult(temp);
break;
case 4:
if((y == Double.MIN_VALUE && c.getStr2().length() != 0) || y == 0)
{
JOptionPane.showMessageDialog(null, "除數(shù)不能為0! 請重新輸入除數(shù)!");
c.getStr2().setLength(0);
c.getDisplay().setText("");
c.setDoubleOperatorFlag(4);
c.setNewFlag(true);
c.setPointFlag(true);
c.setDivZeroFlag(true);
return ;
}
else if(y != Double.MIN_VALUE)
{
temp = x / y;
showDoubleResult(temp);
c.setDivZeroFlag(false);
}
break;
case 5:
temp = Math.pow(x, y);
showDoubleResult(temp);
break;
case 6:
temp = Math.pow(x, 1/y);
showDoubleResult(temp);
break;
case 7:
n = (int)x;
count = (int)y;
temp = factorial(count, n);
showDoubleResult(temp);
break;
case 8:
n = (int)x;
count = (int)y;
temp = factorial(count, n) / factorial(count, count);
showDoubleResult(temp);
break;
case 9:
if((y == Double.MIN_VALUE && c.getStr2().length() != 0) || y == 0)
{
JOptionPane.showMessageDialog(null, "不能對0求模! 請重新輸入!");
c.getStr2().setLength(0);
c.getDisplay().setText("");
c.setDoubleOperatorFlag(9);
c.setNewFlag(true);
c.setPointFlag(true);
c.setModZeroFlag(true);
return ;
}
else if(y != Double.MIN_VALUE)
{
temp = Math.IEEEremainder(x, y);
showDoubleResult(temp);
}
break;
}
}
private void showDoubleResult(double temp)
{
c.getDisplay().setText(Double.toString(temp));
c.getStr2().setLength(0);
c.getStr1().setLength(0);
c.getStr1().append(Double.toString(temp));
c.setDoubleOperatorFlag(-1);
c.setPointFlag(true);
c.setNewFlag(false);
c.setChangeFlag(false);
}
private double factorial(int count, int n)
{
double sum = 1;
for(int i = n; count > 0; i--, count--)
sum *= i;
if(sum == 1)return 0;
else return sum;
}
private void firstSingleCalculate()
{
double singlem = Double.MIN_VALUE;
try
{
singlem = Double.parseDouble(c.getStr1().toString());
}
catch(NumberFormatException e){}
evaluateSingleOperator();
switch(c.getSingleOperatorFlag())
{
case 0:
singlem = Math.sin(singlem);
showFirstSingleResult(singlem);
break;
case 1:
singlem = Math.cos(singlem);
showFirstSingleResult(singlem);
break;
case 2:
singlem = Math.tan(singlem);
showFirstSingleResult(singlem);
break;
case 4:
singlem = Math.toDegrees(singlem);
showFirstSingleResult(singlem);
break;
case 5:
singlem = Math.toRadians(singlem);
showFirstSingleResult(singlem);
break;
case 6:
singlem = Math.pow(singlem, 2);
showFirstSingleResult(singlem);
break;
case 8:
singlem = Math.sqrt(singlem);
showFirstSingleResult(singlem);
break;
case 10:
singlem = Math.log10(singlem);
showFirstSingleResult(singlem);
break;
case 11:
singlem = Math.log(singlem);
showFirstSingleResult(singlem);
break;
case 13:
singlem = Math.exp(singlem);
showFirstSingleResult(singlem);
break;
case 14:
singlem = factorial((int)singlem, (int)singlem);
showFirstSingleResult(singlem);
break;
case 23:
singlem = (int)singlem;
showFirstSingleResult(singlem);
break;
case 29:
singlem /= 100;
showFirstSingleResult(singlem);
break;
case 35:
if(singlem == Double.MIN_VALUE)
{
JOptionPane.showMessageDialog(null, "分母不能為0! 請重新輸入!");
c.getStr1().setLength(0);
c.getDisplay().setText("");
return ;
}
singlem = 1 / singlem;
showSecondSingleResult(singlem);
break;
}
}
private void secondSingleCalculate()
{
double doublem = Double.MIN_VALUE;
try
{
doublem = Double.parseDouble(c.getStr2().toString());
}
catch(NumberFormatException e){}
evaluateSingleOperator();
if(doublem == Double.MIN_VALUE)
return ;
switch(c.getSingleOperatorFlag())
{
case 0:
doublem = Math.sin(doublem);
showSecondSingleResult(doublem);
break;
case 1:
doublem = Math.cos(doublem);
showSecondSingleResult(doublem);
break;
case 2:
doublem = Math.tan(doublem);
showSecondSingleResult(doublem);
break;
case 4:
doublem = Math.toDegrees(doublem);
showSecondSingleResult(doublem);
break;
case 5:
doublem = Math.toRadians(doublem);
showSecondSingleResult(doublem);
break;
case 6:
doublem = Math.pow(doublem, 2);
showSecondSingleResult(doublem);
break;
case 8:
doublem = Math.sqrt(doublem);
showSecondSingleResult(doublem);
break;
case 10:
doublem = Math.log10(doublem);
showSecondSingleResult(doublem);
break;
case 11:
doublem = Math.log(doublem);
showSecondSingleResult(doublem);
break;
case 13:
doublem = Math.exp(doublem);
showSecondSingleResult(doublem);
break;
case 14:
doublem = factorial((int)doublem, (int)doublem);
showSecondSingleResult(doublem);
break;
case 23:
doublem = (int)doublem;
showSecondSingleResult(doublem);
break;
case 29:
doublem /= 100;
showSecondSingleResult(doublem);
break;
case 35:
if(doublem == Double.MIN_VALUE)
{
JOptionPane.showMessageDialog(null, "分母不能為0! 請重新輸入!");
c.getStr1().setLength(0);
c.getDisplay().setText("");
return ;
}
doublem = 1 / doublem;
showSecondSingleResult(doublem);
break;
}
}
private void evaluateSingleOperator()
{
if(c.getSingleOperatorFlag() != -1)
return ;
if(source == c.b[0])c.setSingleOperatorFlag(0);
else if(source == c.b[1])c.setSingleOperatorFlag(1);
else if(source == c.b[2])c.setSingleOperatorFlag(2);
else if(source == c.b[4])c.setSingleOperatorFlag(4);
else if(source == c.b[5])c.setSingleOperatorFlag(5);
else if(source == c.b[6])c.setSingleOperatorFlag(6);
else if(source == c.b[8])c.setSingleOperatorFlag(8);
else if(source == c.b[10])c.setSingleOperatorFlag(10);
else if(source == c.b[11])c.setSingleOperatorFlag(11);
else if(source == c.b[13])c.setSingleOperatorFlag(13);
else if(source == c.b[14])c.setSingleOperatorFlag(14);
else if(source == c.b[23])c.setSingleOperatorFlag(23);
else if(source == c.b[29])c.setSingleOperatorFlag(29);
else if(source == c.b[35])c.setSingleOperatorFlag(35);
}
private void showFirstSingleResult(double m)
{
c.getDisplay().setText(Double.toString(m));
c.getStr1().setLength(0);
c.getStr1().append(Double.toString(m));
c.setSingleOperatorFlag(-1);
c.setRefreshFlag(true);
c.setChangeFlag(false);
}
private void showSecondSingleResult(double m)
{
c.getDisplay().setText(Double.toString(m));
if(c.getDoubleOperatorFlag() != -1)
{
c.getStr2().setLength(0);
c.getStr2().append(Double.toString(m));
c.setSingleOperatorFlag(-1);
}
else
c.getStr1().append(Double.toString(m));
c.setChangeFlag(false);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -