gpt4 book ai didi

java - Android 应用程序上的 if 语句帮助

转载 作者:行者123 更新时间:2023-12-01 06:46:01 25 4
gpt4 key购买 nike

iv 创建了一个 Android 应用程序,我的问题是,当我在输入数字之前按 + = -/* 按钮时,我的应用程序停止工作,无论如何我可以做到如果没有数字输入它就不会工作停止工作吗?

<小时/>
package steven.mcilhone.calculatorcoursework;

import java.math.BigDecimal;


import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;


public class Calculator extends Activity {

EditText firstValue;
EditText secondValue;
TextView result;
Button addbtn, subtractbtn, dividebtn, multiplybtn, equalbtn, clearbtn;
BigDecimal firstNum, secondNum;



String Operator = "";

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);

addbtn = (Button) findViewById(R.id.addbtnID);
subtractbtn = (Button) findViewById(R.id.subtractbtnID);
dividebtn = (Button) findViewById(R.id.dividebtnID);
multiplybtn = (Button) findViewById(R.id.multiplybtnID);
equalbtn = (Button) findViewById(R.id.equalbtnID);
clearbtn = (Button) findViewById(R.id.clearbtn);
firstValue = (EditText) findViewById(R.id.edttxt1);
secondValue = (EditText) findViewById(R.id.edttxt1);


clearbtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
EditText edttxt1 = (EditText) findViewById(R.id.edttxt1);
edttxt1.setText("");
}
});



addbtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub

Operator = "+";
addandclear();
}
});

subtractbtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
Operator = "-";
addandclear();
}
});

dividebtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
Operator = "/";
addandclear();

}
});

multiplybtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
Operator = "*";
addandclear();
}
});

equalbtn.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
secondNum = new BigDecimal(secondValue.getText().toString());
EditText edttxt1 = (EditText) findViewById(R.id.edttxt1);
edttxt1.setText("");
if (Operator == "+"){
edttxt1.setText(firstNum.add(secondNum).toString());
}
else if (Operator == "-"){
edttxt1.setText(firstNum.subtract(secondNum).toString());
}
else if (Operator == "/"){
edttxt1.setText(firstNum.divide(secondNum).toString());
}
else if (Operator == "*"){
edttxt1.setText(firstNum.multiply(secondNum).toString());
}



}
});

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_calculator, menu);
return true;
}


public void addandclear(){


firstNum = new BigDecimal(firstValue.getText().toString());
EditText edttxt1 = (EditText) findViewById(R.id.edttxt1);
edttxt1.setText("");
}



}
<小时/>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >

<EditText
android:id="@+id/edttxt1"
android:layout_width="250dp"
android:layout_height="100dp"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:background="?android:attr/editTextBackground"
android:ems="15"
android:inputType="numberDecimal"
android:gravity="right"/>

<Button
android:id="@+id/addbtnID"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_below="@+id/edttxt1"
android:layout_marginLeft="20dp"
android:text="@string/add" />

<Button
android:id="@+id/dividebtnID"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_below="@+id/edttxt1"
android:layout_toRightOf="@+id/addbtnID"
android:text="@string/divide" />

<Button
android:id="@+id/multiplybtnID"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_below="@+id/edttxt1"
android:layout_toRightOf="@+id/dividebtnID"
android:text="@string/multiply" />

<Button
android:id="@+id/subtractbtnID"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignBaseline="@+id/multiplybtnID"
android:layout_alignBottom="@+id/multiplybtnID"
android:layout_toRightOf="@+id/multiplybtnID"
android:text="@string/subtract" />

<Button
android:id="@+id/zerobtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignLeft="@+id/addbtnID"
android:layout_alignParentBottom="true"
android:layout_alignRight="@+id/twobtn"
android:text="@string/zero" />

<Button
android:id="@+id/onebtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_above="@+id/zerobtn"
android:layout_alignLeft="@+id/zerobtn"
android:text="@string/one" />

<Button
android:id="@+id/twobtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_above="@+id/zerobtn"
android:layout_toLeftOf="@+id/multiplybtnID"
android:text="@string/two" />

<Button
android:id="@+id/threebtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_above="@+id/zerobtn"
android:layout_toLeftOf="@+id/subtractbtnID"
android:text="@string/three" />

<Button
android:id="@+id/fourbtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_above="@+id/onebtn"
android:layout_toLeftOf="@+id/twobtn"
android:text="@string/four" />

<Button
android:id="@+id/fivebtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignBaseline="@+id/fourbtn"
android:layout_alignBottom="@+id/fourbtn"
android:layout_toLeftOf="@+id/threebtn"
android:text="@string/five" />

<Button
android:id="@+id/sixbtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignBaseline="@+id/fivebtn"
android:layout_alignBottom="@+id/fivebtn"
android:layout_toRightOf="@+id/fivebtn"
android:text="@string/six" />

<Button
android:id="@+id/sevenbtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_above="@+id/fourbtn"
android:layout_toLeftOf="@+id/fivebtn"
android:text="@string/seven" />

<Button
android:id="@+id/eightbtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_above="@+id/fivebtn"
android:layout_toLeftOf="@+id/sixbtn"
android:text="@string/eight" />

<Button
android:id="@+id/ninebtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignBaseline="@+id/eightbtn"
android:layout_alignBottom="@+id/eightbtn"
android:layout_toRightOf="@+id/eightbtn"
android:text="@string/nine" />

<Button
android:id="@+id/equalbtnID"
android:layout_width="70dp"
android:layout_height="120dp"
android:layout_alignBottom="@+id/threebtn"
android:layout_alignTop="@+id/sixbtn"
android:layout_toRightOf="@+id/threebtn"
android:text="@string/equal" />

<Button
android:id="@+id/clearbtn"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_above="@+id/equalbtnID"
android:layout_alignLeft="@+id/equalbtnID"
android:text="@string/clear" />

</RelativeLayout>

最佳答案

 if (Operator == "+"){

应该是

 if (Operator.eqauls("+")){

这同样适用于代码中的其他 if/else block 。

在比较字符串时,.equals() 总是比 == 更好(除了字符串文字的情况,字符串文字可能会传递 == 条件) .

== 检查引用是否相等。 equals() 检查内容是否相等。 This discussion可能对你有帮助。

编辑:

正如 TedHopp 评论的那样,您引用编译时常量的代码,字符串比较可能不是这里的问题,上面的答案仍然是字符串比较的良好实践。

因为没有可用的堆栈跟踪来解决问题,假设流程满足 if/else 条件之一,另一种可能的错误是 NumberFormatException

Maek 在创建 BigDecimal(String) 实例之前确保您从 EditText 读取的数字是有效的数字。

关于java - Android 应用程序上的 if 语句帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13349815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com