Как перенести целое число из кода if / else if в целое число вне этого кода?(Джава) - PullRequest
0 голосов
/ 20 мая 2018

Я пытаюсь написать код, который может решать экспоненциальные вопросы и может решать экспоненциальные вопросы с помощью целочисленных входных данных и словарных вводов (т. Е. Один, два ... и т. Д.).Я в значительной степени разобрался с целочисленными частями, однако я застрял в части «Ввод слова».В основном, последняя часть в моем коде для части слова (int base = y, exponent = z), в которой я могу вычислить показатель степени, не работает, потому что y и z не могут быть извлечены из операторов if / else if

Как мне сделать мой код так, чтобы int base = y, exponent = z могли извлекать их из соответствующих кодов if / else if?

Спасибо большое!

public static void main(String[] args) {
    Scanner choice = new Scanner(System.in);
    System.out.println("Enter 1 for Alphabetical Input, 2 for numerical input:");
    int solution = choice.nextInt();

    if(solution == 1) {
        for(int i=1; i<=100;i++) {
            Scanner words = new Scanner(System.in);

            System.out.print("Enter your base");
            String x = words.toString();
            String x1 = "zero";
            String x2 = "one";
            String x3 = "two";
            String x4 = "three";
            String x5 = "four";
            String x6 = "five";
            String x7 = "six";
            String x8 = "seven";
            String x9 = "eight";
            String x10 = "nine";
            String x11 = "ten";

            if(x == x1) {
                int y = 0;
            }
            else if(x == x2) {
                int y = 1;
            }
            else if(x == x3) {
                int y = 2;
            }
            else if(x == x4) {
                int y = 3;
            }
            else if (x == x5) {
                int y = 4;
            }
            else if (x == x6) {
                int y = 5;
            }
            else if (x == x7) {
                int y = 6;
            }
            else if (x == x8) {
                int y = 7;
            }
            else if (x == x9) {
                int y = 8;
            }
            else if (x == x10) {
                int y = 9;
            }
            else if (x == x11) {
                int y = 10;
            }
            else {
                System.out.println("I can't read that!");
            }
            System.out.println("Enter your exponent");

            Scanner exponent = new Scanner(System.in);

            String a = exponent.toString();


            if(a == x1) {
                int z = 0;
            }
            else if(a == x2) {
                int z = 1;
            }
            else if(a == x3) {
                int z = 2;
            }
            else if(a == x4) {
                int z = 3;
            }
            else if (a == x5) {
                int z = 4;
            }
            else if (a == x6) {
                int z = 5;
            }
            else if (a == x7) {
                int z = 6;
            }
            else if (a == x8) {
                int z = 7;
            }
            else if (a == x9) {
                int z = 8;
            }
            else if (a == x10) {
                int z = 9;
            }
            else if (a == x11) {
                int z = 10;
            }
            else {
                System.out.println("I can't read that!");
            }
            int base = y, exponents = z; //this does not work, y and z aren't pulled 
            double result = Math.pow(base, exponents);
            }

    }
    else if(solution ==2 ) {
        for(int i=1;i<=100;i++){
            Scanner number = new Scanner(System.in);

            System.out.print("Enter your base:");

            int x = number.nextInt();

            Scanner up = new Scanner(System.in);

            System.out.print("Enter your exponent:");

            int y = up.nextInt();

            int base = x, exponent = y;
            double result = Math.pow(base, exponent);

            System.out.println("Answer = " + result);
        }
    }
    else {
        System.out.println("Could not read input");
    }
}

}

Ответы [ 2 ]

0 голосов
/ 20 мая 2018

Объявите их как @ Shuang Li , указанные перед циклом for, в противном случае y и z видны только в пределах if.

Кроме того, вы не должны использовать if (x == x1), так как это проверяет, равен ли ваш ввод адресу памяти String x1, и, таким образом, выведет «Я не могу это прочитать!».Для проверки, равны ли строки, вы хотите использовать if (x.equals(x1)).

Дальнейшее чтение при вводе пользователем с помощью String x = words.toString(); не делает того, что вы хотели бы, поскольку оно мгновенно переходит к части ifпрохождение null до String x.Вместо этого вы должны использовать

String x = words.next(); или String x = words.nextLine();

, в отличие от .toString();, методы .next(); и .nextLine(); являются методами Scanner, поэтому они будут ждатьлюбой ввод, и только после получения ввода код будет выполняться в дальнейшем.

Таким образом, это может быть целью, к которой вы стремитесь:

public static void main(String[] args) {
    Scanner choice = new Scanner(System.in);
    System.out.println("Enter 1 for Alphabetical Input, 2 for numerical input:");
    int solution = choice.nextInt();

    int y = 0;
    int z = 0;

    if (solution == 1) {
        for (int i = 1; i <= 100; i++) {
            Scanner words = new Scanner(System.in);

            System.out.print("Enter your base");
            String x = words.next();
            String x1 = "zero";
            String x2 = "one";
            String x3 = "two";
            String x4 = "three";
            String x5 = "four";
            String x6 = "five";
            String x7 = "six";
            String x8 = "seven";
            String x9 = "eight";
            String x10 = "nine";
            String x11 = "ten";

            if (x.equals(x1)) {
                y = 0;
            } else if (x.equals(x2)) {
                y = 1;
            } else if (x.equals(x3)) {
                y = 2;
            } else if (x.equals(x4)) {
                y = 3;
            } else if (x.equals(x5)) {
                y = 4;
            } else if (x.equals(x6)) {
                y = 5;
            } else if (x.equals(x7)) {
                y = 6;
            } else if (x.equals(x8)) {
                y = 7;
            } else if (x.equals(x9)) {
                y = 8;
            } else if (x.equals(x10)) {
                y = 9;
            } else if (x.equals(x11)) {
                y = 10;
            } else {
                System.out.println("I can't read that!");
            }
            System.out.println("Enter your exponent");

            Scanner exponent = new Scanner(System.in);

            String a = exponent.next();

            if (a.equals(x1)) {
                z = 0;
            } else if (a.equals(x2)) {
                z = 1;
            } else if (a.equals(x3)) {
                z = 2;
            } else if (a.equals(x4)) {
                z = 3;
            } else if (a.equals(x5)) {
                z = 4;
            } else if (a.equals(x6)) {
                z = 5;
            } else if (a.equals(x7)) {
                z = 6;
            } else if (a.equals(x8)) {
                z = 7;
            } else if (a.equals(x9)) {
                z = 8;
            } else if (a.equals(x10)) {
                z = 9;
            } else if (a.equals(x11)) {
                z = 10;
            } else {
                System.out.println("I can't read that!");
            }
            int base = y, exponents = z; // this does not work, y and z aren't pulled
            double result = Math.pow(base, exponents);
            System.out.println("Answer = " + result);
        }

    } else if (solution == 2) {
        for (int i = 1; i <= 100; i++) {
            Scanner number = new Scanner(System.in);

            System.out.print("Enter your base:");

            int x = number.nextInt();

            Scanner up = new Scanner(System.in);

            System.out.print("Enter your exponent:");

            y = up.nextInt();

            int base = x, exponent = y;
            double result = Math.pow(base, exponent);

            System.out.println("Answer = " + result);
        }
    } else {
        System.out.println("Could not read input");
    }
}
0 голосов
/ 20 мая 2018

Объявите y и z перед всем циклом for.То, что вы делали раньше в тех случаях, когда вы объявляли переменную, вы присваивали значение этой переменной и сразу выбрасывали его.Это не питон.IDE должна предупредить вас об этом.

...