1

私はJavaで少し錆びています。いくつかの値を持つ配列があり、そのうちの 1 つが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{}

ステートメント内で呼び出された print ステートメントは印刷されifません。

助言がありますか?

4

7 に答える 7

3

これは、 をString使用して s を比較しているためです==equals代わりに使用する必要があります。

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

==コードがコンパイルされると仮定すると、問題は文字列を;と比較していることです。使用する必要がありますequals(または必要な場合もありますequalsIgnoreCase):

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

Java の文字列はオブジェクトであり、==演算子はオブジェクトの内容ではなく、オブジェクトの同一性 (2 つの変数に同じオブジェクト参照が含まれているか) を比較します。

于 2012-04-27T13:52:54.993 に答える
2

ifinputData[8]が文字列の場合は、equals代わりにメソッドを使用する必要があります==:

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

また、"C"最初に配置すると、`inputData[8]1 が null の場合に null ポインター例外が発生しないことが保証されます。

于 2012-04-27T13:53:09.970 に答える
1

inputData が の場合は、代わりにString[]使用する必要がありますinputdata[8].equals("C")。ではない場合String[]、それらは異なるタイプであるため、これは決して満たされません:)

于 2012-04-27T13:54:25.730 に答える
1

inputData のタイプが の場合、問題は -functionを使用する代わりに参照String[]を比較していることだと思います。.equals()

正しい:

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 に答える