使用 instanceof 时不兼容的条件操作数类型 double 和 double Java(16777232)
Incompatible conditional operand types double and double Java(16777232) when using instanceof
我一直在从事个人 Java 项目,该项目本质上是在模仿交易通用回溯测试电子表格。在一行中使用多个 instanceof
运算符之前,一切都很好。我在网上看了看,但无济于事,没有发现任何相关内容。我在比较 double
类型和 int
时收到不兼容的条件操作数,但是字符串没问题。我使用的编辑器是VSCode。代码如下
while (newLogBool){
Scanner newLog = new Scanner(System.in);
String nLPair = newLog.nextLine();
double nLStartingBalance = newLog.nextDouble();
int nLRisk = newLog.nextInt();
try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); }
if ((nLPair instanceof String) && (nLStartingBalance instanceof double) && (nLRisk instanceof int)){
Logger logger = new Logger(nLPair, nLStartingBalance, nLRisk);
newLogBool = false;
} else {
System.out.println("Inccorect Type: Pair, Starting Balance or Risk. Please try again.");
}
}
谢谢
instanceof
运算符只能应用于引用类型(或 null)。 double
和 int
是原始类型,不是引用类型。
Java Language Specification, 15.20.02
例如,在您的情况下,int
是 int
的一个实例,否则不能。所以没有必要问那个特定的问题。
我一直在从事个人 Java 项目,该项目本质上是在模仿交易通用回溯测试电子表格。在一行中使用多个 instanceof
运算符之前,一切都很好。我在网上看了看,但无济于事,没有发现任何相关内容。我在比较 double
类型和 int
时收到不兼容的条件操作数,但是字符串没问题。我使用的编辑器是VSCode。代码如下
while (newLogBool){
Scanner newLog = new Scanner(System.in);
String nLPair = newLog.nextLine();
double nLStartingBalance = newLog.nextDouble();
int nLRisk = newLog.nextInt();
try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); }
if ((nLPair instanceof String) && (nLStartingBalance instanceof double) && (nLRisk instanceof int)){
Logger logger = new Logger(nLPair, nLStartingBalance, nLRisk);
newLogBool = false;
} else {
System.out.println("Inccorect Type: Pair, Starting Balance or Risk. Please try again.");
}
}
谢谢
instanceof
运算符只能应用于引用类型(或 null)。 double
和 int
是原始类型,不是引用类型。
Java Language Specification, 15.20.02
例如,在您的情况下,int
是 int
的一个实例,否则不能。所以没有必要问那个特定的问题。