Как мне исправить мой вывод относительно моего оператора switch? - PullRequest
0 голосов
/ 26 февраля 2020

У меня проблемы с выводом в моей программе. Предполагается, что пользователь должен сделать выбор относительно того, какой метод он хочет использовать. Затем программа должна go с помощью оператора switch на основе этого выбора и вывести соответствующую сумму или произведение для любого метода и значения, введенного пользователем.

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

import java.util.Scanner;
public class Sum {
    public static void main(String[] args)
    {
        String sum = "S";
        String factorial = "F";

        Scanner scan = new Scanner(System.in);
        System.out.println("Enter " + sum + " to use the sum method or " + factorial + " to use the factorial method.");
        String userSelection = scan.next();

        switch (userSelection.toLowerCase()) {
            case "sum":
                System.out.println("Enter the number you want to use: ");
                int userValue = scan.nextInt();
                int userSum = sum(userValue);
                System.out.println("The resulting value for the sum method is: " + userSum);
                break;

            case "fact":
                System.out.println("Enter the number you want to use: ");
                int userFact = scan.nextInt();
                int userFactorial = fact(userFact);
                System.out.println("The resulting value for the factorial method is: " + userFactorial);
                break;
            default:
                System.out.println("ERROR: Invalid choice.");
            }
            scan.close();
    }
    public static int sum(int num) {
        int sum = 0;
        for (int i = 1; i <= num; i++) {
            sum = i + sum;
        }
        return sum;
    }
    public static int fact(int num) {
        int fact = 1;
        for (int i = 1; i <= num; i++) {
            fact = i * fact;
        }
        return fact;
    }

1 Ответ

0 голосов
/ 26 февраля 2020

Вы сравниваете ввод пользователя с неправильными строками. Вы просите его ввести «S» или «F», но затем вместо этого сравните этот ввод с «суммой» и «фактом».

...