Java 当有双精度时,你在条件句中写什么

Java 当有双精度时,你在条件句中写什么,java,android,Java,Android,当我在if语句中使用| |时,android studio告诉我“Operator | |不能应用于‘int’、‘double’” 那有什么问题?请帮忙 如果代码不好,不要生气,我是编程新手。 这是在Android studio中编写的 package com.ftech.kalkulatorzamalumaturu; import android.content.pm.ActivityInfo; import android.support.v7.app.AppCompatActivity;

当我在if语句中使用| |时,android studio告诉我“Operator | |不能应用于‘int’、‘double’” 那有什么问题?请帮忙 如果代码不好,不要生气,我是编程新手。 这是在Android studio中编写的

package com.ftech.kalkulatorzamalumaturu;

import android.content.pm.ActivityInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;


public class Kalkulator extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_kalkulator);
    setRequestedOrientation (ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);

}

public void onOcistiClick(View v) {
    EditText e1 = (EditText)findViewById(R.id.e1);
    EditText e2 = (EditText)findViewById(R.id.e2);
    EditText e3 = (EditText)findViewById(R.id.e3);
    EditText e4 = (EditText)findViewById(R.id.e4);
    EditText e5 = (EditText)findViewById(R.id.e5);
    EditText e6 = (EditText)findViewById(R.id.e6);
    TextView t1 = (TextView)findViewById(R.id.tvresult);
    TextView t2 = (TextView)findViewById(R.id.pt);
    e1.setText("");
    e2.setText("");
    e3.setText("");
    e4.setText("");
    e5.setText("");
    e6.setText("");
    t1.setText("");
    t2.setText("");
}

public void onButtonClick(View v) {
    EditText e1 = (EditText)findViewById(R.id.e1);
    EditText e2 = (EditText)findViewById(R.id.e2);
    EditText e3 = (EditText)findViewById(R.id.e3);
    EditText e4 = (EditText)findViewById(R.id.e4);
    EditText e5 = (EditText)findViewById(R.id.e5);
    EditText e6 = (EditText)findViewById(R.id.e6);
    TextView t1 = (TextView)findViewById(R.id.tvresult);
    TextView t2 = (TextView)findViewById(R.id.pt);
    double num1 = Double.parseDouble(e1.getText().toString());
    double num2 = Double.parseDouble(e2.getText().toString());
    double num3 = Double.parseDouble(e3.getText().toString());
    double num4 = Double.parseDouble(e4.getText().toString());
    double num5 = Double.parseDouble(e5.getText().toString());
    double num6 = Double.parseDouble(e6.getText().toString());


    if ( num1 = 0 || num2 = 0) {
        t2.setText("Popuni neko polje!");
    }else {

        double sum = (num1*4) + (num2*5) + (num3*5) + num4 + num5 + num6;
        t2.setText("Broj bodova od skole je:");
        t1.setText(String.valueOf(sum));
    }
}

}

您需要以相同的方式对其进行比较,但要使用
双值。不要使用0(
int
),而是使用0.0(
double
):


|
操作符仅对Java中的布尔值进行操作。在字符串示例中,您不是将其用于字符串,而是将其用于布尔值,因为
equals
返回一个
布尔值

if( n.equals("") || c.equals("") ){
//  ^^^^^^^^^^^^----^^^^^^^^^^^^------- booleans
   System.out.println(/*...*/);
}
所以你需要做的是使用一个布尔值。例如,您的
==
将:

if ( n == 0 || c== 0 ){
//   ^^^^^^----^^^^^------- booleans
   System.out.println(/*...*/);
} 
您不能期望它将double转换为boolean:

double d1 = 1.0;
double d2 = 0.0;
if (d1 || d2) {
//  ^^^^^^^^------- WON'T WORK, doubles are not booleans
}
有些语言会将这些值强制为布尔值。Java不会

    double i = 1.5;
    double j = 3.4;
    if((i==4.3) || (j==2.1)){
        //to do code here
    }

我没有任何错误。

您正在与

if ( num1 = 0 || num2 = 0)
应该是什么时候

if ( num1 == 0 || num2 == 0)

一个是赋值,而不是比较

这是一样的,
|
它在android Studio中显示了错误它显示了什么错误??你确定你的值正好是0吗?不是非常非常接近0的值吗?使用双精度的标准做法是不将它们与精确值进行比较,而是查看它们是否足够接近(即,取
actual-expected
的绝对值,并将其与足够小的ε进行比较)。双打有舍入的行为,如果你没有预料到的话,这是非常令人惊讶的。哦,大声叫喊。因此,您最初的问题,即
=
,并不是对实际代码的精确反映,而是使用
=
。编程是一种面向细节的追求。请花点时间回答下一个问题,以确保您确实询问了您遇到的问题。int
0
也可以正常工作——它会自动升级为
double
。@F.Pajic:“不工作”不会帮助任何人找出问题所在。如果
n
c
double
变量,安德鲁答案中的代码应该是好的。值得一提的是,将等式与double进行比较通常是个坏主意。您应该只与运算符=。@F.Pajic进行比较。您确定错误在if语句的开头,而不是if语句的主体(有几个语法错误)吗?请注意,您不需要这些额外的括号-
if(i==4.3 | | j==2.1)
也可以。
if ( num1 == 0 || num2 == 0)