Как мне реализовать запрос пользователя, хотят ли они снова запустить мою Java-программу? - PullRequest
1 голос
/ 09 июля 2019

Я перепробовал несколько методов и до сих пор не могу понять, как это сделать, чтобы мой код спрашивал пользователя, хотят ли они запустить его снова в Java. Это для моего проекта колледжа через два дня.

Я попробовал пару операторов do-while, но они все еще не работают.

public class Project_2_1
{
   public static void main(String args[])
   {

     System.out.println("My project");

     System.out.println("Project_2 Problem_1\n");

     System.out.println("This program computes both roots of a quadratic equation,\n");
     System.out.println("Given the coefficients A,B, and C.\n");

      double secondRoot = 0, firstRoot = 0;
      Scanner sc = new Scanner(System.in);


      System.out.println("Enter the value of a ::");
      double a = sc.nextDouble();

      System.out.println("Enter the value of b ::");
      double b = sc.nextDouble();

      System.out.println("Enter the value of c ::");
      double c = sc.nextDouble();

      double determinant = (b*b)-(4*a*c);
      double sqrt = Math.sqrt(determinant);

      if(determinant>0)
      {
         firstRoot = (-b + sqrt)/(2*a);
         secondRoot = (-b - sqrt)/(2*a);
         System.out.println("Roots are :: "+ firstRoot +" and "+secondRoot);
      }else if(determinant == 0){
         System.out.println("Root is :: "+(-b + sqrt)/(2*a));

      }
    }

  }

Ответы [ 3 ]

1 голос
/ 09 июля 2019

Итак, вы ищете идею цикла.Существует три основных типа петель.

  • A for петля.Обычно используется для loop более Collection, например ArrayList, Map или Array.Синтаксис для этого обычно выглядит следующим образом:

    for (int i = 0; i < someSize; i++){ }
    
  • A while цикл.Обычно используется для циклов, когда вы не знаете, когда они выйдут.Синтаксис для простого цикла выглядит следующим образом:

    boolean condition = true;
    while(condition) {  
        //Code that will make condition false in a certain scenario
    }
    
  • A do while цикл.Это вариант цикла while, когда вы уверены, что хотите, чтобы блок кода выполнялся хотя бы один раз.Пример этого выглядит следующим образом:

    boolean condition = //can be set default to true or false, whichever fits better
    do{
    //Any code you want to execute
    //Your code that will determine if the condition is true or false
    
    } while (condition);
    

Цикл do while - это то, что подходит вашей программе лучше всего, потому что вы хотите запускать ее хотя бы один раз, каждый раз, когдаПрограмма запущена.Так что все, что вам нужно сделать, это вставить его в цикл и создать свое условие.

Я начал с скелета ниже:

    Scanner sc = new Scanner(System.in);
    int choice = 0;
    do{
        System.out.println("Hi, I am being repeated until you tell me stop!"); //Replace this with your code

        System.out.println("Enter 1 to run the program again, 0 to exit.");
        choice = sc.nextInt();

    }while (choice == 1);
    sc.close();
0 голосов
/ 09 июля 2019

Поместите весь ваш код в отдельный метод, затем предложите пользователю и спросите, хочет ли пользователь снова запустить программу.Этот повторяющийся вызов того же метода называется рекурсией.

Позволяет вызвать метод run.

public static void run() {
    ** put all the code from your main method here **

     Scanner s = new Scanner(System.in);
     System.out.println("Would you like to run program again? (Y for yes, N for no)");
     String decision = s.next();
     if(decision.equals("Y")) {
         run();
     } else {
         System.out.println("Finished");
     }
}

public static void main(String args[]) {
   run();
}
0 голосов
/ 09 июля 2019

Вы можете добавить что-то вроде в метод main, но скопируйте все содержимое в это время, теперь ваш код будет работать, пока вы не убьете процесс.

  while(true){
  System.out.println("My project");

     System.out.println("Project_2 Problem_1\n");

     System.out.println("This program computes both roots of a quadratic equation,\n");
     System.out.println("Given the coefficients A,B, and C.\n");

      double secondRoot = 0, firstRoot = 0;
      Scanner sc = new Scanner(System.in);


      System.out.println("Enter the value of a ::");
      double a = sc.nextDouble();

      System.out.println("Enter the value of b ::");
      double b = sc.nextDouble();

      System.out.println("Enter the value of c ::");
      double c = sc.nextDouble();

      double determinant = (b*b)-(4*a*c);
      double sqrt = Math.sqrt(determinant);

      if(determinant>0)
      {
         firstRoot = (-b + sqrt)/(2*a);
         secondRoot = (-b - sqrt)/(2*a);
         System.out.println("Roots are :: "+ firstRoot +" and "+secondRoot);
      }else if(determinant == 0){
         System.out.println("Root is :: "+(-b + sqrt)/(2*a));

      }

    }

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...