Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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 每次我除以,我得到0.0_Java_Android - Fatal编程技术网

Java 每次我除以,我得到0.0

Java 每次我除以,我得到0.0,java,android,Java,Android,我正在尝试制作一个可以在人与人之间分摊账单的应用程序,但每当我尝试在代码中分摊两个数字时,它总是给我0.0。为什么会这样 代码如下: public class MainActivity extends Activity { public int x = 0; public double y = 1.00; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedIns

我正在尝试制作一个可以在人与人之间分摊账单的应用程序,但每当我尝试在代码中分摊两个数字时,它总是给我0.0。为什么会这样

代码如下:

public class MainActivity extends Activity {
    public int x = 0;
    public double y = 1.00;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Button
        Button btn = (Button) findViewById(R.id.button);

        //EditText
        EditText nop = (EditText) findViewById(R.id.editText);
        EditText cob = (EditText) findViewById(R.id.editText2);


        try{
            x = Integer.valueOf(nop.getText().toString());
        } catch (NumberFormatException e) {
            x = 0;
        }

        try{
            y = Double.valueOf(cob.getText().toString());
        } catch (NumberFormatException e) {
            y = 1.00;
        }


        //TextView
        final TextView tv = (TextView) findViewById(R.id.textView);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                 Double z = (y / x);
                tv.setText("You will each pay:" + (z));
            }
        });

    }
    }

我的猜测是,您不会在单击后计算值。try/catch的代码应该是onclick方法。

单击按钮从
EditText
获取值,否则您将无法获取输入的值,因为获取
x
y
值的代码将在您启动应用程序后立即执行,不再进行进一步获取

这样做

    final TextView tv = (TextView) findViewById(R.id.textView);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            try{
                x = Integer.valueOf(nop.getText().toString());
            } catch (NumberFormatException e) {
                x = 0;
            }

            try{
                y = Double.valueOf(cob.getText().toString());
            } catch (NumberFormatException e) {
                y = 1.00;
            }

             Double z = (y / x);
            tv.setText("You will each pay:" + (z));
        }
    });

如果以下代码中存在异常,则x将为零

try {
    x = Integer.valueOf(nop.getText().toString());
} catch (NumberFormatException e) {
    x = 0;
}

现在,由于这个异常,您除以零将得到无穷大而不是0.0。另外,请确保参与者的默认数量为1而不是零。如果将其设置为零,则最好不要进行除法,并强制用户输入正确的数字,否则必须捕获除法为零的异常

public class MainActivity extends Activity {
    public int x = 1;
    public double y = 1.00;
    public EditText nop;
    public EditText cob;
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //Button
        Button btn = (Button) findViewById(R.id.button);

        //EditText
        nop = (EditText) findViewById(R.id.editText);
        cob = (EditText) findViewById(R.id.editText2);

        //TextView
        final TextView tv = (TextView) findViewById(R.id.textView);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                try{
                    x = Integer.valueOf(nop.getText().toString());
                } catch (NumberFormatException e) {
                    x = 1;
                }

                try{
                    y = Double.valueOf(cob.getText().toString());
                } catch (NumberFormatException e) {
                    y = 1.00;
                }

                Double z = (y / x);
                tv.setText("You will each pay:" + (z));
            }
        });

    }
}

可能您的
Integer.valueOf
-方法会引发异常。那么你总是有0。0@mrT当你除以0时,你得不到0.0。您将得到
NaN
无穷大
。在catch语句中赋值
x=0
有点危险,因为这可能导致被零除,这将返回被零除异常。@MarkoTopolnik您的权利!