Как я могу сделать так, чтобы этот код не возвращал бесконечное число l oop? - PullRequest
0 голосов
/ 23 января 2020

Я думаю, что должен использовать String goAgainResponse, чтобы не было бесконечного l oop, но я не знаю, как будет выглядеть код для этого. Я должен приблизиться к пи, добавив 4 - 4/3 + 4/5 - 4/7 + 4/9 et c. добавив столько этих терминов вместе с числом, которое я прошу ввести пользователя.

      int term;
      int counter = 1;
      double piCalc=0.0;
      String goAgainResponse = null;
      boolean goAgain = false;
      Scanner kb = new Scanner(System.in);

      /* NOTE you may not declare any additional variables */

      do
      {

         System.out.println("This program will approximate Pi based on the following series:");
         System.out.println("4 - 4/3 + 4/5 - 4/7 + 4/9 - ...");

         System.out.println("Enter the term number to which you would like to approximate Pi");

         term = kb.nextInt();
         while(term <= 9)
         {
            System.out.print("Please enter a number greater than 9:");
            term = kb.nextInt();
         }

         while(term > 9)
         {
            term += 1;
            piCalc = 4/(2 * term - 1);
            System.out.print(piCalc);
         }

         System.out.print("Would you like to try again (yes/no)? ");
     }while(goAgain);

Ответы [ 2 ]

1 голос
/ 23 января 2020
while(term <= 9)
     {
        System.out.print("Please enter a number greater than 9:");
        term = kb.nextInt();
     }

В этом случае вы говорите, что термин должен быть больше 9. Но ваше второе условие l oop - это термин> 9, и вы добавляете значения в термин, поэтому второй l oop бесконечен

while(term > 9)
     {
        term += 1;
        piCalc = 4/(2 * term - 1);
        System.out.print(piCalc);
     }

изменение условия 2-го l oop решит вашу проблему. ИЛИ рассмотрим term+=1 еще раз.

Также согласно @Scary Wombat значение boolean doagain никогда не устанавливается

0 голосов
/ 23 января 2020

boolean goAgain = false;

Это никогда не устанавливается на что-либо еще, и l oop только зацикливается, пока оно true

...