我的Java有点生疏了。我有一个包含多个值的数组,其中一个值用于if
语句。
这是我正在检查的单个字符,而且它不起作用的事实让我相信它可能是一个空白问题。数据来自一个mysql数据库,我已经尝试在查询中使用trim()
来删除任何空格,但没有运气。
以下是代码:
Payoff payoff=new PlainVanillaPayoff(Option.Type.Put,Strike);
if(inputData[8] == "C"){
System.out.println("TypeCall"); // Check to see whether if stmt is ever true.
payoff=new PlainVanillaPayoff(Option.Type.Call,Strike);
} else{}
在if
语句中调用的print语句永远不会打印。
有什么建议吗?
答案 0 :(得分:3)
这是因为您正在使用String
比较==
。您应该使用equals
代替。
if(inputData[8].equals("C"))
答案 1 :(得分:3)
假设代码编译,问题是您要将字符串与==
进行比较;你应该使用equals
(有时你想要equalsIgnoreCase
):
if(inputData[8].equals("C")){
Java中的字符串是对象,==
运算符比较对象标识(两个变量包含相同的对象引用),而不是对象的内容。
答案 2 :(得分:2)
如果inputData[8]
是字符串,则应使用equals
方法而不是==
:
if("C".equals(inputData[8]))
另外,首先放置"C"
可确保在`inputData [8] 1为空时不会出现空指针异常。
答案 3 :(得分:1)
如果inputData是String[]
,则应使用inputdata[8].equals("C")
。如果它不是String[]
,那么它永远不会满满,因为它们是不同的类型:)
答案 4 :(得分:1)
如果inputData的类型是String[]
,那么我猜您的问题是您正在比较引用而不是使用.equals()
- 函数。
正确:
if(inputData[8].equals("C"))
答案 5 :(得分:0)
数组是字符串数组还是char数组?
在if子句中,您需要使用“与字符串进行比较时”或“使用char进行比较时”。
如果是字符串,请在if子句
中尝试这样的方法stringname.charAt(x) == 'C'
答案 6 :(得分:-1)
如果inputData是一个字符数组?
if(inputData[8] == 'C') should solve it.
否则你可以试着看它是否确实包含" c"
Payoff payoff=new PlainVanillaPayoff(Option.Type.Put,Strike);
if(inputData[8] == "C"){
System.out.println("TypeCall"); // Check to see whether if stmt is ever true.
payoff=new PlainVanillaPayoff(Option.Type.Call,Strike);
} else{ System.out.println("inputData[8] contains: ->" + inputData[8] + "<-");}