2010-05-06 4 views
-1

Этот код не работает. Можете ли вы помочь мне исправить это?правильный метод «получить следующее значение»

// need to get next parameter 
static double getParametr() 
{ 
    Scanner scanner = new Scanner(System.in); 
    param = scanner.nextDouble(); 
    return param; 
} 
// ... 
// ... 
if (i==1) 
{ 
    System.out.println("vvedite storoni pryamougolnika: "); 
    Shape parA = new Rectangle(); 
    parA.a = Shape.getParametr(); --- this is ok 
    double aa = parA.a; 
    Shape parB = new Rectangle(); 
    parB.b = Shape.getParametr(); ------ this is no work!!! 
    double bb = parB.b; 
    Rectangle rec = new Rectangle(aa, bb); 
    arrayFigur[i] = rec.area(); 
} 
+0

Пожалуйста, выделите код и нажмите кнопку кода в редакторе –

+0

Этот код вызывает какие-либо исключения или что-то еще? Все хорошо. – Crozin

+0

Также вы можете рассказать нам, какие сообщения об ошибках вы получаете и т. Д.? Что вы отправляете в System.in? (command line?) – GalacticCowboy

ответ

1

Я собираюсь предположить, что parB.b является несуществующей, или, может быть, даже не в два раза. Вы действительно должны предоставить нам больше информации.

Примечание. Создание нового объекта сканера при каждом вызове getParametr() неэффективно.

+0

моя java и английский не идеальны)) У меня нет сообщений об ошибках или исключениях. программа «зависает» или «держится» :) – user334637

+0

У меня проблема с getParametr(), но я не могу переписать. – user334637

0

Я думаю, проблема в том, что вы создаете новый сканер для каждого параметра, который вы хотите проанализировать. Возможно, первый сканер читает больше символов из ввода, чем вам нужен для вашего первого параметра. Затем для следующего параметра создается новый сканер, но там поток не устанавливается точно после завершения первого параметра.

Вы должны создать только один сканер и использовать этот экземпляр для всего синтаксического анализа.

+0

ОК, спасибо :)) – user334637

Смежные вопросы