2015-12-21 4 views
0
int wmath1 = 1; 
    do { 
    if (wmath.equals(add)) { 
     System.out.print(5 + 5); 
    } else if (wmath.equals(sub)) { 
     System.out.println(6 - 2); 
    } else { 
     System.out.println("sorry but that not an option"); 
     int wmath1 = 0; 
    } 
    } while (wmath1 < 1); 
} 

Я пытаюсь создать цикл, в котором, если пользователь не выберет ни один из заданных параметров, цикл снова повторится, чтобы он мог выбрать один из заданных параметров, повторите программу.Ошибка: Дублировать локальную переменную

Однако, когда я назначаю wmath = 1, сначала это должно разрешить завершение цикла, если инструкция else не запущена, но она дает мне ошибку, которая используется повторно, но она должна быть переименована.

Вышеупомянутый код - это всего лишь часть цикла while. Имя части сканера wmath не указано.

+3

Возможный дубликат [Дублированный локальной переменной (для Loops)] (HTTP : //stackoverflow.com/questions/24239426/duplicate-local-variablefor-loops) – HopefullyHelpful

+0

Вы задаете вопрос, очень похожий на вопрос, заданный на этом сайте. Pls скопируйте часть или все ваше сообщение об ошибке в поиск StackOverflow в следующий раз и посмотрите, найдете ли вы ответ. Также отправьте сообщение EXACT об ошибке в свой пост в следующий раз, поскольку это имеет решающее значение для отладки. – HopefullyHelpful

ответ

1

Вы не должны повторно объявлять wmath1 внутри цикла. Просто обновите значение переменной, которую вы указали до цикла.

Изменить

int wmath1 = 0; 

в

wmath1 = 0; 
0

Во-первых, как и другие комментарии указывают, вы не должны повторно объявлять wmath внутри, если блок.

Есть еще одна проблема с вашим кодом. Что делать, если пользователь не выбирает какой-либо вариант с первой попытки, но во второй попытке выбирает add или sub? Цикл do-while будет работать и, к сожалению, навсегда.

0

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

Scanner sc= new Scanner(System.in); 
    int wmath = sc.nextInt(); 
    boolean ok=false; 
    do { 

     if (wmath==1) { 
      ok=true; 
      System.out.print(5 + 5); 
     } else if (wmath==2) { 
      ok=true; 
      System.out.println(6 - 2); 
     } else { 
      System.out.println("sorry but that not an option"); 
     //here you have to change the value of wmath by the value that user insert 
      wmath = sc.nextInt(); 
     } 
    } while (ok==false); 
Смежные вопросы