Как я могу написать программу, которая задает вопросы с несколькими вариантами ответов, а затем выполняет действия ввода для каждого ответа? - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь написать программу, в которой пользователь должен выбрать один ответ из вопроса с несколькими вариантами ответов. Если этот пользователь выбирает один из трех вариантов, ему нужно ввести число, чтобы программа могла его вычислить. Мой вопрос, который я хочу задать программе: «Вы хотите вычислить квадрат root, логарифм или факториал?». Кроме того, смогу ли я включить условия if-else в ту же программу? Вот мой код:

System.out.println("Would you like to calculate?");
String choice = new choice[3];
choice[0] = "Square root";
choice[1] = "Logarithm";
choice[2] = "Factorial";
choice = scan.nextString();

if (choice = "Square root") {
    System.out.println("Enter the number to square root: ");
    double x = scan.nextDouble();
    System.out.println(Math.sqrt(x));
} else if (choice = "Logarithm") {
    System.out.println("Enter the number to log: ");
    double x = scan.nextDouble();
    System.out.println(Math.log(x));
} else {
    System.out.println("Enter the number to do factorial: ");
    double x = scan.nextDouble();
    System.out.println(factorial(x));
}

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

Спасибо.

1 Ответ

0 голосов
/ 24 апреля 2020

Вы можете сделать это следующим образом

 System.out.println("Would you like to calculate?");
    System.out.println("1- Square root/n2- Logarithm\n3- Factorial");

    Scanner scan = new Scanner(System.in);
    int choice = scan.nextInt();

    if (choice == 1) {
        System.out.println("Enter the number to square root: ");
        double x = scan.nextDouble();
        System.out.println(Math.sqrt(x));
    } else if (choice == 2) {
        System.out.println("Enter the number to log: ");
        double x = scan.nextDouble();
        System.out.println(Math.log(x));
    } else if (choice == 3) {
        System.out.println("Enter the number to do factorial: ");
        double x = scan.nextDouble();
        System.out.println(factorial(x));
    } else {
        System.out.println("Invalid choice");
    }

Также вы сравнили String с символом =. Это неверно. Мы используем метод .equal () для сравнения строк в java. например,

if (choice.equal("Factorial");

ИЛИ Если вы хотите сделать это, как ваш подход. Тогда у вас есть некоторые синтаксические ошибки. Строка 2 должна быть новой строкой () вместо новой выборки (). Кроме того, почему вы сделали массив строк? Правильный код будет таким:

System.out.println("Would you like to calculate?");

String choice = scan.nextString();

if (choice.equal("Square root")) {
    System.out.println("Enter the number to square root: ");
    double x = scan.nextDouble();
    System.out.println(Math.sqrt(x));
} else if (choice.equal("Logarithm")) {
    System.out.println("Enter the number to log: ");
    double x = scan.nextDouble();
    System.out.println(Math.log(x));
} else if (choice.equal("Factorial") {
    System.out.println("Enter the number to do factorial: ");
    double x = scan.nextDouble();
    System.out.println(factorial(x));
}
...