Невозможно получить "рассчитать снова" от пользователя на работу - PullRequest
0 голосов
/ 13 октября 2018

Я написал игру «камень, бумага, ножницы», в которой снова была игра.

Я не могу понять, чего там не хватает.

Мне просто нужно спросить пользователя, хотят ли они рассчитать еще один круг.

Фрагмент кода:

package circleapp;
import java.util.Scanner;

public class CircleApp {

   static Scanner sc = new Scanner(System.in);

   public static void main(String[] args) {
       String answer;
       String calcAgain;

       do{
           System.out.print("Enter a radius: ");
            double radius = sc.nextDouble();

            //Diameter=2 * radius
            double diameter= 2 * radius;
            System.out.println("Diameter: " + diameter);

            //Circumference= 2 * PI * radius
            double circumference= Math.PI * 2*radius;
            System.out.println( "Circumference: "+circumference);

            //Area= PI*radius*radius
            double area = Math.PI * (radius * radius);
            System.out.println("Area: " + area);


            //Would the user like to calculate again?

            System.out.print("Would you like to enter another circle? (Y/N)");
            calcAgain = sc.nextLine();

        }
        while (calcAgain.equalsIgnoreCase("Y"));
    }     
}

Как решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

изменить

calcAgain = sc.nextLine();

на

calcAgain = sc.next();

Это должно работать

0 голосов
/ 13 октября 2018

Вместо чтения полной строки с nextLine() используйте простой next():

import java.util.Scanner;

public class CircleApp {

    static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        String calcAgain;

        do {
            System.out.print("Enter a radius: ");
            double radius = sc.nextDouble();

            //Diameter=2 * radius
            double diameter = 2 * radius;
            System.out.println("Diameter: " + diameter);

            //Circumference= 2 * PI * radius
            double circumference = Math.PI * 2 * radius;
            System.out.println("Circumference: " + circumference);

            //Area= PI*radius*radius
            double area = Math.PI * (radius * radius);
            System.out.println("Area: " + area);


            //Would the user like to calculate again?
            System.out.print("Would you like to enter another circle? (Y/N) ");
            calcAgain = sc.next();

        } while (calcAgain.equalsIgnoreCase("Y"));
    }
}

Вывод будет выглядеть примерно так:

Enter a radius: 4
Diameter: 8.0
Circumference: 25.132741228718345
Area: 50.26548245743669
Would you like to enter another circle? (Y/N): y
Enter a radius: 5
Diameter: 10.0
Circumference: 31.41592653589793
Area: 78.53981633974483
Would you like to enter another circle? (Y/N): n

Кроме того, я предлагаю написать свойкод очень удобочитаемыйНапример, то, что снизу будет лучше для чтения:

двойная окружность = Math.PI * 2 * radius;

или

двойная окружность = Math.PI * 2 * radius;

Кстати, когда задаете вопрос, просто укажите свою проблему и пропустите другую деталь.

...