Если конструировать в вызове hashmap.put - PullRequest
0 голосов
/ 23 ноября 2008

У меня есть переменная типа Hashmap <String,Integer>.

В этом случае значение Integer может потребовать некоторых манипуляций в зависимости от значения переменной-флага. Я сделал это так ...

Hashmapvariable.put( somestring,
    if (flag_variable) {
     //manipulation code goes here
     new Integer(manipulated value);
    } else {
     new Integer(non-manipulated value);
    }
);

Но я получаю ошибку:

Синтаксическая ошибка на токене (ах), неуместна конструкции.

при вызове Hashmapvariable.put.

Я также получаю еще одну ошибку

Синтаксическая ошибка на токене ")", удалите это маркер.

в финале ");" линия. Но я не могу удалить ")" - это закрывающие скобки для вызова метода put.

Я не понимаю этого. Какую ошибку я делаю?

Ответы [ 3 ]

7 голосов
/ 23 ноября 2008
 new Integer(flag_variable ? manipulated value : non-manipulated value)

делает трюк

Edit: На Java 5, я полагаю, вы также можете написать

hashmap.put(someString, flag_variable ? manipulated value : non-manipulated value)

из-за автобокса.

4 голосов
/ 23 ноября 2008

Вы не можете поместить оператор в вызов метода.

Однако, одним из вариантов может быть создание метода, который возвращает Integer, например:

private Integer getIntegerDependingOnFlag(boolean flag)
{
    if (flag)
        return new Integer(MANIPULATED_VALUE);
    else
        return new Integer(NON-MANIPULATED_VALUE);
}

Затем вы можете позвонить так:

hashmap.put(someString, getIntegerDependingOnFlag(flag));
0 голосов
/ 23 ноября 2008

Это не схема, поэтому, если операторы не оцениваются как значения. Вам придется использовать tri-if-thing (имя почему-то ускользает от меня прямо сейчас) или создать функцию, как сказал кто-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...