error: incomparable types: double and <null>
error: incomparable types: double and <null>
我的代码给出了这个错误:
error: incomparable types: double and .
我不知道为什么。
这就是我想要做的:
我有一个公式(谁给了我一个双倍)但是如果这个公式没有给我答案(除以零,...)我想打印:没有答案!
beta & alfa是2个双打,你可以选择。
double valueOne = valueOne(alfa,beta);
double valueTwo = valueTwo(alfa,beta);
public double valueOne(double alfa, double beta)
{
return (-(Math.sqrt((-beta)/alfa)))+alfa;
}
public double valueTwo(double alfa, double beta)
{
return (Math.sqrt((-beta)/alfa))+alfa;
}
if(valueOne == null && valueTwo == null)
{
System.out.println("No values");
}
首先,valueOne
和 valueTwo
都是方法,但您尝试将它们称为变量 (?!):
if(valueOne == null && valueTwo == null){
其次,无论如何,这些方法的 return 类型和(如果您定义相同类型的变量)是 double
,这是原始类型,不能是 null
。 null
是一个特殊值,只能与对象引用一起使用。
先学习一些解释 java 类型的 java 教程。
我认为你误解了一些事情。
- 你似乎没有调用你的两个方法 - 我假设你的意思是 valueOne(1, 2)
- 如果您的计算出现错误(例如被零除),它不会 return 为 null,它会抛出 ArithmeticException
- 因此您不应该与 null 进行比较,您应该使用 try catch 块来处理错误
- 你不能将像 double 这样的原子类型与 null 进行比较;只有对对象的引用才能与 null
进行比较
您可以使用字符串操作,因为 java 不允许原始类型具有空值。
如果字符串为空,则不会出现任何值。希望对您有所帮助。
public static void main(String []args){
if(valueOne(0,0).equals("") && valueTwo(0,0).equals(""))
System.out.println("No values");
else
System.out.println("val1:"+valueOne(0,0)+"val2:"+valueTwo(0,0));
}
public static String valueOne(double alfa, double beta){
return ""+(-(Math.sqrt((-beta)/alfa)))+alfa;;
}
public static String valueTwo(double alfa, double beta){
return ""+(-(Math.sqrt((-beta)/alfa)))+alfa;;
}
我猜你需要这样的东西:
public double[] myMethod(double vAlfa, double vBeta, double wAlfa, double wBeta) {
double[] answers = new double[2];
try {
answers[0] = (-(Math.sqrt((-vBeta) / vAlfa))) + vAlfa;
answers[1] = (Math.sqrt((-wBeta)/wAlfa)) + wAlfa;
} catch (Exception e) {
System.out.println("No values");
}
return answers;
}
此方法returns 将处理结果作为双精度数组(因为您有两个值)。
在 try
块中,我们尝试计算答案并将它们放入数组中。
在 catch
块中,我们通过调用 System.println();
为我们打印给定的字符串来处理每个异常(NullPointerException
或 DivisionByZero
或...)。
希望对你有帮助。
将 double
与 null
进行比较当然是非法的,因为第一个是值类型,而值类型永远不是 null
,null
代表与引用类型进行比较时。此页面可能会帮助您区分两者:What’s the difference between a primitive type and a class type in Java?
如果您不想对无效值或结果抛出异常,您的方法可以使用 Double.NaN
constnt 字段:
public double valueOne(double alfa, double beta)
{
// At least one of the values is invalid.
if (Double.isNaN((alfa) || Double.isNaN((beta))
{
return Double.NaN;
}
// Check the alpha or otherwise a div/0 exception may be thrown.
if (alfa == 0.0)
{
return Double.NaN;
}
double divResult = (-beta)/alfa;
// Check the div result because Math.sqrt accepts only positive values:
// If the argument is NaN or less than zero, the result is NaN.
if (divResult < 0.0)
{
return Double.NaN;
}
return (-(Math.sqrt(divResult)))+alfa;
}
double resultValueOne = valueOne(alfa, beta);
if(Double.isNaN((resultOne))
{
System.out.println("No resultValueOne");
}
我的代码给出了这个错误:
error: incomparable types: double and .
我不知道为什么。
这就是我想要做的:
我有一个公式(谁给了我一个双倍)但是如果这个公式没有给我答案(除以零,...)我想打印:没有答案!
beta & alfa是2个双打,你可以选择。
double valueOne = valueOne(alfa,beta);
double valueTwo = valueTwo(alfa,beta);
public double valueOne(double alfa, double beta)
{
return (-(Math.sqrt((-beta)/alfa)))+alfa;
}
public double valueTwo(double alfa, double beta)
{
return (Math.sqrt((-beta)/alfa))+alfa;
}
if(valueOne == null && valueTwo == null)
{
System.out.println("No values");
}
首先,valueOne
和 valueTwo
都是方法,但您尝试将它们称为变量 (?!):
if(valueOne == null && valueTwo == null){
其次,无论如何,这些方法的 return 类型和(如果您定义相同类型的变量)是 double
,这是原始类型,不能是 null
。 null
是一个特殊值,只能与对象引用一起使用。
先学习一些解释 java 类型的 java 教程。
我认为你误解了一些事情。
- 你似乎没有调用你的两个方法 - 我假设你的意思是 valueOne(1, 2)
- 如果您的计算出现错误(例如被零除),它不会 return 为 null,它会抛出 ArithmeticException
- 因此您不应该与 null 进行比较,您应该使用 try catch 块来处理错误
- 你不能将像 double 这样的原子类型与 null 进行比较;只有对对象的引用才能与 null 进行比较
您可以使用字符串操作,因为 java 不允许原始类型具有空值。 如果字符串为空,则不会出现任何值。希望对您有所帮助。
public static void main(String []args){
if(valueOne(0,0).equals("") && valueTwo(0,0).equals(""))
System.out.println("No values");
else
System.out.println("val1:"+valueOne(0,0)+"val2:"+valueTwo(0,0));
}
public static String valueOne(double alfa, double beta){
return ""+(-(Math.sqrt((-beta)/alfa)))+alfa;;
}
public static String valueTwo(double alfa, double beta){
return ""+(-(Math.sqrt((-beta)/alfa)))+alfa;;
}
我猜你需要这样的东西:
public double[] myMethod(double vAlfa, double vBeta, double wAlfa, double wBeta) {
double[] answers = new double[2];
try {
answers[0] = (-(Math.sqrt((-vBeta) / vAlfa))) + vAlfa;
answers[1] = (Math.sqrt((-wBeta)/wAlfa)) + wAlfa;
} catch (Exception e) {
System.out.println("No values");
}
return answers;
}
此方法returns 将处理结果作为双精度数组(因为您有两个值)。
在 try
块中,我们尝试计算答案并将它们放入数组中。
在 catch
块中,我们通过调用 System.println();
为我们打印给定的字符串来处理每个异常(NullPointerException
或 DivisionByZero
或...)。
希望对你有帮助。
将 double
与 null
进行比较当然是非法的,因为第一个是值类型,而值类型永远不是 null
,null
代表与引用类型进行比较时。此页面可能会帮助您区分两者:What’s the difference between a primitive type and a class type in Java?
如果您不想对无效值或结果抛出异常,您的方法可以使用 Double.NaN
constnt 字段:
public double valueOne(double alfa, double beta)
{
// At least one of the values is invalid.
if (Double.isNaN((alfa) || Double.isNaN((beta))
{
return Double.NaN;
}
// Check the alpha or otherwise a div/0 exception may be thrown.
if (alfa == 0.0)
{
return Double.NaN;
}
double divResult = (-beta)/alfa;
// Check the div result because Math.sqrt accepts only positive values:
// If the argument is NaN or less than zero, the result is NaN.
if (divResult < 0.0)
{
return Double.NaN;
}
return (-(Math.sqrt(divResult)))+alfa;
}
double resultValueOne = valueOne(alfa, beta);
if(Double.isNaN((resultOne))
{
System.out.println("No resultValueOne");
}