📄 memoryeng.java.bak
字号:
/////// MemoryEng.java ///////
public class MemoryEng extends CalcEng
{
public void operate(char c)
{ if ( pre_oper(c) ) return;
super.operate(c);
post_oper(c);
}
public boolean isError()
{ return statusFlag.equals(ERROR) ||
statusFlag.equals(MEMORY_ERROR);
}
public double getMemory()
{ return m; }
public String keys() { return super.keys()+ MKS; }
protected void allClear()
{ super.allClear();
m = 0.0;
}
protected void clear() // memory or entry
{ if ( statusFlag.equals(MEMORY_ERROR) )
statusFlag= MEMORY;
else
super.clear();
}
protected boolean pre_oper(char c)
{ switch( c )
{ case 'R': // MR
setOperand(m); return true;
case '%': // percent
if (argcnt == 1 ) return true;
if (op == '*' || op == '/')
{ arg *= 0.01;
super.operate('=');
return true;
}
case 's': // sqrt
op = '=';
if (argcnt == 2) { ans = arg; argcnt--; }
if ( ans < 0.0 ) statusFlag = ERROR;
else ans = Math.sqrt(ans);
return true;
}
return false;
}
protected void post_oper(char c)
{ switch( c )
{ case 'M': // M+
tmp = m + ans;
if ( isError(tmp) ) statusFlag = MEMORY_ERROR;
else
{ m = tmp; op = '=';
statusFlag = MEMORY;
}
break;
case 'm': // M-
tmp = m - ans;
if ( isError(tmp) ) statusFlag = MEMORY_ERROR;
else
{ m = tmp; op = '=';
statusFlag = MEMORY;
}
break;
}
}
protected final String MKS = "MmRs%";
protected final String MEMORY = "M";
protected final String MEMORY_ERROR = "ME";
protected double m = 0.0; // memory register
protected double tmp;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -