我一直在尝试在android studio中构建一个简单的计算器。一切都很好,但我有一个问题,当我运行计算器,我按下点按钮,它显示在textview"。"相反" 0。" 另外,我需要检查单个数值中是否存在两个小数点。
这是一张图片:
显示"。"
我希望:
我怎么能改变这个?,这是我的代码:
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."}
}
我正在考虑为点按钮创建另一种方法,但是当我按下另一个按钮时,文本值的内容会消失,如何解决这个问题?
答案 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());