Java 自动检查和计算不起作用
我正在创建一个PV=nRT计算器,让用户输入三个给定变量中的任意一个。在不使用按钮的情况下,程序将自动检测已给出的三个变量,并自动计算第四个缺失变量。这是我目前的代码:Java 自动检查和计算不起作用,java,android,Java,Android,我正在创建一个PV=nRT计算器,让用户输入三个给定变量中的任意一个。在不使用按钮的情况下,程序将自动检测已给出的三个变量,并自动计算第四个缺失变量。这是我目前的代码: Thread calculate = new Thread(new Runnable() { @Override public void run() { try { if (Calculations.isCalcable(pressu
Thread calculate = new Thread(new Runnable() {
@Override
public void run() {
try {
if (Calculations.isCalcable(pressure.getText().toString(),
volume.getText().toString(),
moles.getText().toString(),
temperature.getText().toString()) == true) {
if (pressure.getText().toString().length() == 0) {
pressure.setText("1010");
} else if (volume.getText().toString().length() == 0) {
volume.setText("1010");
} else if (moles.getText().toString().length() == 0) {
moles.setText("1010");
} else {
temperature.setText("1010");
}
}
} catch (Exception e){
}
}
});
calculate.start();
这不管用。我也不确定我是否真的应该用线。下面是当我输入三个变量(R变量是常数)时发生的情况:
在这种情况下,温度文本应更改为“1010”
这是我的可计算类:
public class Calculations {
public static boolean isCalcable (String pressure, String volume, String moles, String temperature){
int hasNumber = 0;
if (pressure.length() > 0){
hasNumber++;
}
if (volume.length() > 0){
hasNumber++;
}
if (moles.length() > 0){
hasNumber++;
}
if (temperature.length() > 0){
hasNumber++;
}
if (hasNumber == 3){
return true;
}
return false;
}
}
我该怎么办?您需要的是检测是否已在 文本字段,对吗?那你看了吗? 关于如何使用它
editText.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
//code
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
//code
}
@Override
public void afterTextChanged(Editable s) {
//code
}
});
基本上,您可以将TextWatcher应用于这三个字段并进行观察。
如果这三个字段都具有所需的值,则进行计算
也许您可以将全局变量添加到活动中,并在文本字段的onTextChanged()方法上检查这些全局变量,如果其中三个变量已经完成,请设置第四个变量的值。我已经有办法检测文本字段中输入的值。我需要程序在输入其他三个变量后计算第四个变量,不需要按钮。就是这样。在每个文本字段的onTextChanged()方法上,检查三个变量是否为空或不为null,然后如果它们不为空或为null,则计算并设置第四个变量。谢谢!我是一个初学者,所以我不确定线程是否是用于此的正确方法。不客气。如果您对此还有任何问题,请再次评论或发布其他问题。欢迎来到StackOverflow顺便说一下:D