点在计算器机器人工作室

时间:2017-09-13 07:16:53

标签: java android

我一直在尝试在android studio中构建一个简单的计算器。一切都很好,但我有一个问题,当我运行计算器,我按下点按钮,它显示在textview"。"相反" 0。" 另外,我需要检查单个数值中是否存在两个小数点。

这是一张图片:

enter image description here

显示"。"

我希望:

enter image description here

我怎么能改变这个?,这是我的代码:

    private int cont=0;

    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    display=(TextView)findViewById(R.id.display);
    text="";
}


    public void numero1(View view){ /*when i press a number, this method executes*/
    Button button = (Button) view;
    text += button.getText().toString();
    display.setText(text);
}

    public void dot(View view){ /*This is not finished*/
    display.setText{"0."}
    }

我正在考虑为点按钮创建另一种方法,但是当我按下另一个按钮时,文本值的内容会消失,如何解决这个问题?

4 个答案:

答案 0 :(得分:0)

试试这个

public void numero1(View view){ /*when i press a number, this method executes*/
Button button = (Button) view;
text += button.getText().toString();
if(text.substring(0,1).equals("."))
text="0"+text;    
display.setText(text);
}

答案 1 :(得分:0)

试试这种方式

public void dot(View view){ /*This is not finished*/
               String str=display.getText().toString().trim();
                  if(str.length()>0){
                      display.seText(str+".")
                  }else{
                      display.setText("0.")
                  }
    }

答案 2 :(得分:0)

使用字符串构建器并将输入的所有文本追加到现有字符串中。在显示之前,只需在字符串构建器上使用toString()方法。

答案 3 :(得分:0)

创建一个表示要显示的字符序列的类,并处理传入的字符。

例如:

class Display {
    boolean hasPoint = false;
    StringBuilder mSequence;

    public Display() {
        mSequence = new StringBuilder();
        mSequence.append('0');
    }

    public void add(char pChar) {
        // avoiding multiple floating points
        if(pChar == '.'){
            if(hasPoint){
                return;
            }else {
                hasPoint = true;
            }
        }
        // avoiding multiple starting zeros
        if(!hasPoint && mSequence.charAt(0) == '0' && pChar == '0'){
            return;
        }
        // adding character to the sequence 
        mSequence.append(pChar);
    }

    // Return the sequence as a string
    // Integer numbers get trailing dot
    public String toShow(){
        if(!hasPoint)
            return mSequence.toString() + ".";
        else
            return mSequence.toString();
    }
}

将此类点击侦听器设置为数字和“点/点”按钮:

class ClickListener implements View.OnClickListener{
    @Override
    public void onClick(View view) {
        // getting char by name of a button
        char aChar = ((Button) view).getText().charAt(0);
        // trying to add the char
        mDisplay.add(aChar);
        // displaying the result in the TextView
        tvDisplay.setText(mDisplay.toShow());
    }
}

初始化活动的onCreate()中的显示:

    mDisplay = new Display();
    tvDisplay.setText(mDisplay.toShow());