2015-04-26 5 views
1

Я хочу, чтобы этот код продолжал работать, пока пользователь продолжает вводить «Y» или «y» при появлении запроса, любой другой вход должен выйти из программы. Поскольку мой код сейчас, он работает только один раз независимо от того, что вводится. Как это исправить?Запустить программу до тех пор, пока не будет выполнено определенное условие?

Вот мой код:

import java.util.Scanner; 

public class zigzag { 
    public static void main(String[] args) { 
     Scanner myScanner, sc; 
     myScanner = new Scanner(System. in); 

     while (true) { 
      System.out.print("Enter an integer between 3 and 33: "); 
      int nStars = myScanner.nextInt(); 

      if (nStars > 33 || nStars < 3) { 
       System.out.println("Sorry, this input is out of the accepted range"); 
      } else { 
       for (int i = 0; i < nStars; i++) { 
        System.out.print("*"); 
       } 
       System.out.println(" "); 
      } 
      for (int j = 0; j < nStars - 2; j++) { 
       System.out.print(" "); 
       for (int k = 0; k <= j - 1; k++) { 
        System.out.print(" "); 
       } 
       System.out.println("*"); 
      } 
      for (int g = 0; g < nStars; g++) { 
       System.out.print("*"); 
      } 
      System.out.println(" "); 

      System.out.print("Enter 'Y' or 'y' to go again: "); 
      char ch = myScanner.next().charAt(0); 

      if (ch != 'y' || ch != 'Y') { 
       break; 
      } 
     } 
    } 
} 
+1

вместо имеющий, если с условием, необходимо добавить, что условие на время цикла, и, возможно, изменить его сделай ..while –

+0

Пожалуйста, научитесь форматировать ваш код, это неразборчиво. –

ответ

1
if (ch!='y' || ch!='Y') 

будет верно всегда.

Изменение || в && вместо так, чтобы она выглядит следующим образом:

if (ch!='y' && ch!='Y') 
+0

Но я не хочу, чтобы программа выходила, если ch равен y или Y – Clarisa

+0

@ Clarisa правильно, я думал, что вы хотите закончить с помощью «Y» - я исправил это – tomse

2

Вы хотите

if(ch!='y' && ch!='Y'){ 

не

if(ch!='y' || ch!='Y'){ 
0

условие if неправильно - она ​​всегда будет вычисляться true. Так как персонаж не может быть как y и Y Simultaniously, он будет всегда быть «не равно y или не равна Y.

Вместо этого необходимо условие, которое проверяет, если символ не равен yи не равна Y:

if(ch!='y' && ch!='Y') { 
    break; 
} 
Смежные вопросы