Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 自动检查和计算不起作用_Java_Android - Fatal编程技术网

Java 自动检查和计算不起作用

Java 自动检查和计算不起作用,java,android,Java,Android,我正在创建一个PV=nRT计算器,让用户输入三个给定变量中的任意一个。在不使用按钮的情况下,程序将自动检测已给出的三个变量,并自动计算第四个缺失变量。这是我目前的代码: Thread calculate = new Thread(new Runnable() { @Override public void run() { try { if (Calculations.isCalcable(pressu

我正在创建一个PV=nRT计算器,让用户输入三个给定变量中的任意一个。在不使用按钮的情况下,程序将自动检测已给出的三个变量,并自动计算第四个缺失变量。这是我目前的代码:

    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