Java 当有双精度时,你在条件句中写什么
当我在if语句中使用| |时,android studio告诉我“Operator | |不能应用于‘int’、‘double’” 那有什么问题?请帮忙 如果代码不好,不要生气,我是编程新手。 这是在Android studio中编写的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;
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
的绝对值,并将其与足够小的ε进行比较)。双打有舍入的行为,如果你没有预料到的话,这是非常令人惊讶的。哦,大声叫喊。因此,您最初的问题,即=
,并不是对实际代码的精确反映,而是使用=
。编程是一种面向细节的追求。请花点时间回答下一个问题,以确保您确实询问了您遇到的问题。int0
也可以正常工作——它会自动升级为double
。@F.Pajic:“不工作”不会帮助任何人找出问题所在。如果n
和c
是double
变量,安德鲁答案中的代码应该是好的。值得一提的是,将等式与double进行比较通常是个坏主意。您应该只与运算符=。@F.Pajic进行比较。您确定错误在if语句的开头,而不是if语句的主体(有几个语法错误)吗?请注意,您不需要这些额外的括号-if(i==4.3 | | j==2.1)
也可以。
if ( num1 == 0 || num2 == 0)