如何将if / else if代码中的整数转换为该代码外部的整数? (Java)的

时间:2018-05-20 11:33:28

标签: java string if-statement integer exponent

我试图编写一个可以解决指数问题的代码,并且可以从整数输入和字输入(即一,二......等)中解决指数问题。我几乎想出了整数部分,但是我仍然坚持使用" Word输入"部分。主要是,我的代码中的最后一部分(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 :(得分:2)

在for-loop前面声明它们为@Shuang Li,否则y和z仅在关注if中可见。

除此之外,您不应该使用if (x == x1),因为这会检查您的输入是否等于字符串x1的内存地址,因此将打印出来&#34;我无法读取它!&# 34 ;.要检查字符串是否相等,您需要使用if (x.equals(x1))

使用String x = words.toString();进一步阅读用户输入的内容并没有达到您希望它执行的操作,因为它会立即跳转到if-part传递nullString 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");
    }
}

答案 1 :(得分:1)

在整个for循环前面声明y和z。 你之前做过的就是你声明一个变量,你为这个变量分配了一个值,然后立即抛弃它。这不是python。 IDE应该给你一个警告。