Мне нужно, чтобы этот Java-код повторялся на основе пользовательского ввода, и я не могу заставить его повторяться, используя код, который у меня есть до сих пор - PullRequest
0 голосов
/ 25 сентября 2019

Мне нужно, чтобы этот Java-код повторялся на основе ввода пользователя, и я не могу заставить его повторяться, используя код, который у меня есть до сих пор.Я не должен использовать какой-либо другой импорт кроме сканера и использовать класс main.Это потому, что мы используем https://repl.it/languages/java10 в качестве нашего компилятора, потому что мы элементарный класс.Когда я запускаю код, он должен запросить десять случайных сложений и вычитаний и должен спросить, хочет ли пользователь продолжить или нет.При вводе 1 для продолжения следует задать еще десять вопросов.однако после запуска этого кода он останавливается после первого вопроса.

import java.util.Scanner;
class Main {
  public static void main(String[] args) {
    System.out.println("Answer the following questions.");
    Scanner in = new Scanner(System.in);
    int A = 0;
    int N = 10;
    int n = 0;
    int H = 0;
    boolean p = true;
        while (p){
        int R1 = (int)(Math.random() * 50 + 1);
        int R2 = (int)(Math.random() * 999 + 1);
        int R3 = (int)(Math.random() * 999 + 1);
          if(R1>25){
          System.out.println( "" + R2 + " + " + R3);
          A = in.nextInt();
            if (A == (R2 + R3))
              System.out.println("Correct");
            else 
              System.out.println("Incorrect");
        }
          if(R1<25){
            System.out.println( "" + R2 + " - " +  R3);
           A = in.nextInt();
            if (A == (R2 - R3))
              System.out.println("Correct");
            else 
              System.out.println("Incorrect");}
        N--;
        if (N==0)
        p = false;
        continue;
        }System.out.println("Do you want ot continue? Put 1 for yes, 2 for no.");
        H = in.nextInt();
        if (H==1)
        p=true;
        else
        p=false;
      while (N>0);
  }
    }

1 Ответ

1 голос
/ 25 сентября 2019

Вот почему вы поставили вопрос System.out.println("Do you want ot continue? Put 1 for yes, 2 for no."); из while.Я рекомендую использовать do while вместо while.Так что вам просто нужно поставить вопрос внутри цикла do while.

        System.out.println("Answer the following questions.");
        Scanner in = new Scanner(System.in);
        int A = 0;
        int N = 10;
        int H = 0;
        boolean p = true;
        do{
            int R1 = (int) (Math.random() * 50 + 1);
            int R2 = (int) (Math.random() * 999 + 1);
            int R3 = (int) (Math.random() * 999 + 1);
            if (R1 > 25) {
                System.out.println("" + R2 + " + " + R3);
                A = in.nextInt();
                if (A == (R2 + R3)) {
                    System.out.println("Correct");
                } else {
                    System.out.println("Incorrect");
                }
            }
            if (R1 < 25) {
                System.out.println("" + R2 + " - " + R3);
                A = in.nextInt();
                if (A == (R2 - R3)) {
                    System.out.println("Correct");
                } else {
                    System.out.println("Incorrect");
                }
            }
            N--;

            System.out.println("Do you want ot continue? Put 1 for yes, 2 for no.");
            H = in.nextInt();
            if (H == 1) {
                p = true;
            } else {
                p = false;
            }
            if (N == 0) {
                p = false;
                System.out.println("You have reached your max attempts.")
            }
        }while (N > 0 && p);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...