关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
9天前关门了。
改进这个问题
我正在做一个简单的计算器应用程序。除了退格外,一切正常。其中有两个错误。如果没有要删除的号码,应用程序将关闭。我用一个新代码修复了它。
但我真的不能解决最后一个问题。当我删除号码后放入新号码时,删除的号码会再次出现。
你能告诉我怎么修吗? deleteOnClick
在最后。 workings
似乎是错的,我试图用不同的代码修复,但我不断出错。
public class MainActivity extends AppCompatActivity {
TextView workingsTV;
TextView resultsTV;
String workings = "";
String CLEAR_INT_TEXT;
Boolean isFirstInput = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initTextView();
}
private void initTextView() {
workingsTV = (TextView)findViewById(R.id.workingsTextView);
resultsTV = (TextView)findViewById(R.id.resultTextView);
}
private void setWorkings(String givenValue) {
workings = workings + givenValue;
workingsTV.setText(workings);
}
public void equalsOnClick(View view) {
Double result = null;
ScriptEngine engine = new ScriptEngineManager().getEngineByName("rhino");
try {
result = (Double) engine.eval(workings);
if (result != null) {
int intVal = (int) result.doubleValue();
if (result == intVal) {//Check if it's value is equal to its integer part
resultsTV.setText(String.valueOf(intVal));
}
else {
resultsTV.setText(String.valueOf(result));
}
}
}
catch (ScriptException e) {
Toast.makeText(this, "Invalid Input", Toast.LENGTH_SHORT).show();
}
}
public void clearOnClick(View view) {
workingsTV.setText("");
workings = "";
resultsTV.setText("");
leftBracket = true;
isFirstInput = true;
}
boolean leftBracket = true;
public void bracketsOnClick(View view) {
if(leftBracket) {
setWorkings("(");
leftBracket = false;
}
else {
setWorkings(")");
leftBracket = true;
}
}
public void deleteOnClick(View view) {
if(workingsTV.getText().toString().length() > 1) {
String getResultText = workingsTV.getText().toString();
String subString = getResultText.substring(0, getResultText.length() -1);
workingsTV.setText(subString);
} else {
workingsTV.setText(CLEAR_INT_TEXT);
isFirstInput = true;
}
}
public void divisionOnClick(View view)
{
setWorkings("/");
}
public void sevenOnClick(View view)
{
setWorkings("7");
}
public void eightOnClick(View view)
{
setWorkings("8");
}
public void nineOnClick(View view)
{
setWorkings("9");
}
public void timesOnClick(View view)
{
setWorkings("*");
}
public void fourOnClick(View view)
{
setWorkings("4");
}
public void fiveOnClick(View view)
{
setWorkings("5");
}
public void sixOnClick(View view)
{
setWorkings("6");
}
public void minusOnClick(View view)
{
setWorkings("-");
}
public void oneOnClick(View view)
{
setWorkings("1");
}
public void twoOnClick(View view)
{
setWorkings("2");
}
public void threeOnClick(View view)
{
setWorkings("3");
}
public void plusOnClick(View view)
{
setWorkings("+");
}
public void decimalOnClick(View view)
{
setWorkings(".");
}
public void zeroOnClick(View view)
{
setWorkings("0");
}
}
我找到了解决办法。
workings = workings.substring(0, workings.length() -1); workings
也应该删除。
1条答案
按热度按时间dphi5xsq1#
在“deleteonclick”中,您可以执行以下操作:
也许这可以代替使用子字符串