2012-04-27 5 views
1

Я немного ржавый на своей Java. У меня есть массив с несколькими значениями, один из которых используется в операторе if.Операция 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 заявления никогда не печатает.

Любые предложения?

+0

Что 'inputData' магазин массив? –

+0

Этот вопрос задан много раз - в списке «Related» справа есть примеры. Пожалуйста, сделайте больше исследований, прежде чем отправлять вопрос. –

ответ

3

Это потому, что вы сравниваете String с помощью ==. Вместо этого вы должны использовать equals.

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

Если предположить, что код компилируется, проблема заключается в том, что вы сравнение строк с ==; Вы должны использовать equals (или иногда вы хотите equalsIgnoreCase):

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

Строки в Java являются объекты и == оператор сравнивает идентификатор объекта (сделать две переменные содержат ту же ссылку на объект), а не содержимое поля объекты.

2

если inputData[8] является строка, которую вы должны использовать equals метод вместо ==:

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

также, поставив "C" первый делает, что вы не получите исключения нулевого указателя, если `inputData [8] 1 ноль.

1

Если inputData является String[], вместо этого вы должны использовать inputdata[8].equals("C"). Если сво не String[], это никогда не будет FULLFILL, так как они имеют разные типы :)

1

Если тип inputData является String[], то я думаю, ваша проблема в том, что вы сравниваете ссылки вместо использования .equals() -функции.

Правильно:

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

Является ли массив строковый массив или массив символов?

В если пункте вам нужно использовать "при сравнении со строками или« когда это делать с гольца.

если это строка попробовать что-то подобное в вашей, если пункт

stringname.charAt(x) == 'C' 
-1

Если inputData это массив символов?

if(inputData[8] == 'C') should solve it. 

В противном случае вы можете попробовать просто чтобы увидеть, если он действительно содержит «с»

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] + "<-");} 
Смежные вопросы