1

我对我的 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{}

在语句内部调用的 printif语句从不打印。

有什么建议么?

4

7 回答 7

3

这是因为您正在String使用 s 比较 s ==。你应该equals改用。

if(inputData[8].equals("C"))
于 2012-04-27T13:51:54.377 回答
3

假设代码编译,问题是你正在比较字符串==; 你应该使用equals(或者有时你想要equalsIgnoreCase):

if(inputData[8].equals("C")){

Java中的字符串是对象==运算符比较对象身份(两个变量是否包含相同的对象引用),而不是对象的内容。

于 2012-04-27T13:52:54.993 回答
2

ifinputData[8]是一个字符串,您应该使用该equals方法而不是==

if("C".equals(inputData[8]))

此外,"C"如果 `inputData[8]1 为空,则首先确保不会出现空指针异常。

于 2012-04-27T13:53:09.970 回答
1

如果 inputData 是 a String[],则应inputdata[8].equals("C")改为使用。如果它不是 a String[],这将永远不会满,因为它们是不同的类型 :)

于 2012-04-27T13:54:25.730 回答
1

如果 inputData 的类型是String[]那么我猜你的问题是你正在比较引用而不是使用.equals()-function。

正确的:

if(inputData[8].equals("C"))
于 2012-04-27T13:55:11.770 回答
0

数组是字符串数组还是字符数组?

在 if 子句中,您需要在与字符串比较时使用 " 或在与 char 比较时使用 '。

如果它是一个字符串,在你的 if 子句中尝试这样的事情

stringname.charAt(x) == 'C'
于 2012-04-27T13:56:04.243 回答
-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] + "<-");}
于 2012-04-27T13:56:23.713 回答