我正在制作计算器应用程序,每当我启动应用程序并首次点击数字屏幕(Edittext
)显示Null(Number)
在应用启动其展示n
null(num)
号码
这是我的应用程序屏幕截图:
主要活动:
package com.example.user.calculator;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import java.util.regex.Pattern;
public class MainActivity extends AppCompatActivity {
private EditText _screen;
private String display;
private String currentOperator = "";
private String result = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
_screen = (EditText)findViewById(R.id.textView);
_screen.setText(display);
}
private void updateScreen() {
_screen.setText(display);
}
public void onClickNumber(View v) {
if (result != ""){
clear();
updateScreen();
}
Button b = (Button)v;
display += b.getText();
updateScreen();
}
private boolean isOperator(char op){
switch (op){
case '+':
case '-':
case 'X':
case '/': return true;
default: return false;
}
}
public void onClickOperator(View v){
if(display == "") return;
Button b =(Button)v;
if (result != ""){
String _display = result;
clear();
display = _display;
}
if(currentOperator != "") {
Log.d("CalcX", ""+display.charAt(display.length()-1));
if(isOperator(display.charAt(display.length()-1))){
display = display.replace(display.charAt(display.length()-1), b.getText().charAt(0));
updateScreen();
return;
}else {
getResult();
display = result;
result = "";
}
currentOperator = b.getText().toString();
}
display += b.getText();
currentOperator = b.getText().toString();
updateScreen();
}
private void clear(){
display = "";
currentOperator = "";
result = "";
}
public void onClickClear(View v) {
clear();
updateScreen();
}
private double operate(String a, String b, String op) {
switch (op) {
case "+":
return Double.valueOf(a) + Double.valueOf(b);
case "-":
return Double.valueOf(a) - Double.valueOf(b);
case "X":
return Double.valueOf(a) * Double.valueOf(b);
case "/":
try {
return Double.valueOf(a) / Double.valueOf(b);
} catch (Exception e) {
Log.d("Calc", e.getMessage());
}
default:
return -1;
}
}
private boolean getResult(){
if(currentOperator == "") return false;
String[] operation = display.split(Pattern.quote(currentOperator));
if (operation.length < 2 ) return false;
result = String.valueOf( operate(operation[0], operation[1], currentOperator));
return true;
}
public void onClickEqual(View v){
if(display == "") return;
if(!getResult()) return;
_screen.setText(display + "\n" + String.valueOf(result));
}
}
答案 0 :(得分:2)
将display
设为""
private String display = "";
最初将字符串变量初始化为null
因此,通过""
初始化字符串,您可以阻止在null
中获取EditText
答案 1 :(得分:0)
您需要将默认值设为&#39;显示&#39;领域。默认情况下,java为字段变量赋予null。如果您尝试显示一个null的字符串,它将显示为&#39; null&#39;
private String display= "";
private String display="123";
答案 2 :(得分:0)
_screen = (EditText)findViewById(R.id.textView);
**_screen.setText(display);** //remove this line because you have to set number after user entry...
OR
String display = null;初始化变量..
答案 3 :(得分:0)
您需要使用String
比较.equals("")
,
if(str.equals("")) // for check == condition
if(!str.equals("")) // for check != condition
此处str
是您的result
,display
和currentOperator
在声明部分,您需要将display
变量初始化为=""
。那是display = ""
这可能会对你有所帮助。