Относительно объекта для двойной Java - PullRequest
0 голосов
/ 03 марта 2010

Я получаю ошибку компиляции "не утверждение" для приведенного ниже кода. Не уверен, что не так. inMax - это hasmap. tcharge - это строка, и это ключ. Это правильное утверждение?

Double tMaxCharge= (Double)inMax.get(tCharge);

Ответы [ 3 ]

5 голосов
/ 03 марта 2010

выглядит хорошо, проверьте оператор перед этим.

2 голосов
/ 03 марта 2010

Видимо ваш код был что-то вроде:

if (someCondition)
    Double tMaxCharge= (Double)inMax.get(tCharge); 
else
    doSomething();

Как говорит @objects, это недопустимый синтаксис Java. A LocalVariableDeclarationStatement - это BlockStatement, но не Statement, а для оператора if требуется Statement после ).

Но если вы думаете об этом, LocalVariableDeclarationStatement, что это не внутри Block, бессмысленно. Область действия объявления немедленно заканчивается, поэтому объявленный идентификатор не может быть использован. (И это должно закончиться немедленно, иначе вы получите все виды языковых аномалий.)

2 голосов
/ 03 марта 2010

Компилятор Java не всегда так полезен, как кажется.Посмотрите на другие линии рядом, где он указывает на вас.Проблема может быть на линии раньше.

Я согласен с ответом объектов, но чтобы избежать приведения, вы можете просто использовать дженерики в этом случае, например:

HashMap<String,Double> myMap = new HashMap<String,Double>();

myMap.put("foo", 3.14); //or new Double(3.14)

myMap.get("foo") //evaluates to type Double (and can be autoboxed to a double)
...