2015-04-25 4 views
-7

Я пытаюсь сделать цикл, который считывает и обрабатывает предложения и заканчивается только тогда, когда пользователь набирает «Остановить», чтобы завершить программу. Ниже приведен код им с помощью и я получаю ошибку компиляции else ifВыполнение цикла до тех пор, пока пользовательские типы в «Стоп»

System.out.println("Please Input a sentence and (terminate with \"STOP \")"); 

    String sentenceInput; 
    int sentenceLength; 
    char sentencePunct; 
    int divisionNum; 
    int number; 
    int divided; 
    int remainder; 

    sentenceInput= myScanner.nextLine(); 
    sentenceLength = sentenceInput.length(); 
    remainder = sentenceLength%2; 
    sentencePunct = sentenceInput.charAt(sentenceLength -1); 

    while (!sentenceInput.equals ("STOP")) { 
     if (sentencePunct == '?') 
     { 
      if (remainder == 0) 
       System.out.println("Yes");` 
       System.out.println("Please Input another sentence (terminate with \"STOP \")"); 
       sentenceInput= myScanner.nextLine(); 
      else 
       System.out.println("No"); 
       System.out.println("Please Input another sentence (terminate with \"STOP \")"); 
       sentenceInput= myScanner.nextLine(); 
     } 
     else if (sentencePunct == '!') 
       System.out.println("Wow!"); 
       System.out.println("Please Input another sentence (terminate with \"STOP \")"); 
       sentenceInput= myScanner.nextLine(); 
      else 
       System.out.println("You always say " + sentenceInput); 
       System.out.println("Please Input another sentence (terminate with \"STOP \")"); 
       sentenceInput= myScanner.nextLine(); 
     } 

} 
+0

Можете ли вы отправить сообщение об ошибке компилятора? – digitalextremist

+0

Я решил проблему, спасибо, что ошибка компиляции была «else without if» –

ответ

2

Ваша область видимости повсюду, необходимо убедиться, что полное if/else заключено в {}, так как это большая часть вашего чужого не имеет никакого подключения.

while (!sentenceInput.equals ("STOP")) { 
    if (sentencePunct == '?') 
    { 
     if (remainder == 0) { 
      System.out.println("Yes");` 
      System.out.println("Please Input another sentence (terminate with \"STOP \")"); 
      sentenceInput= myScanner.nextLine(); 
     } 
     else { 
      System.out.println("No"); 
      System.out.println("Please Input another sentence (terminate with \"STOP \")"); 
      sentenceInput= myScanner.nextLine(); 
     } 
    } 
    else if (sentencePunct == '!') { 
      System.out.println("Wow!"); 
      System.out.println("Please Input another sentence (terminate with \"STOP \")"); 
      sentenceInput= myScanner.nextLine(); 
     } 
     else { 
      System.out.println("You always say " + sentenceInput); 
      System.out.println("Please Input another sentence (terminate with \"STOP \")"); 
      sentenceInput= myScanner.nextLine(); 
     } 
    } 

}

+0

Спасибо за редактирование. Могу ли я выполнить ту же область действия с помощью операторов 'case'? –

+0

Да, но поскольку для этого потребуется вложенный коммутационный футляр, не уверен, стоит ли он - не выглядит элегантным, не более простым и т. Д. –

1

Вам нужно определить объем отчетности (несколько заявлений) в течение еще если и еще части, которые вы могли бы сделать с фигурными скобками. Так что ваш код должен быть:

else if (sentencePunct == '!') { 
    .... 
} else { 
    ... 
} 

если вы не определить сферу, то компилятор просто считает немедленное заявление после того, если/другое/другое, если в пределах области и в вашем случае, это будет не в состоянии найти которые, если связать (последний) еще с.

+0

Спасибо за редактирование. –

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