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

Posted

技术标签:

【中文标题】如何将 if/else if 代码中的整数转换为该代码外部的整数? (爪哇)【英文标题】:How do I carry over an integer from within a if/else if code into an integer from outside that code? (java) 【发布时间】:2018-05-20 11:33:28 【问题描述】:

我正在尝试编写一个可以解决指数问题的代码,并且可以解决整数输入和字输入(即一、二……等)的指数问题。我几乎弄清楚了整数部分,但是我被困在“单词输入”部分。主要是,我代码中单词部分的最后一部分(int base = y,exponent = z),我可以在其中计算指数不起作用,因为无法从 if/else if 语句中提取 y 和 z

我如何制作我的代码,以便 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");
    

【问题讨论】:

【参考方案1】:

将它们声明为 @Shuang Li 在 for 循环前面所说的,否则 y 和 z 仅在相关 if 中可见。

除此之外,您不应使用if (x == x1),因为它会检查您的输入是否等于字符串 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");
    

【讨论】:

【参考方案2】:

在整个 for 循环前面声明 y 和 z。 你之前在那些 if 中所做的是你声明了一个变量,你给这个变量赋值,然后你立即把它扔掉。这不是蟒蛇。 IDE 应该为此发出警告。

【讨论】:

以上是关于如何将 if/else if 代码中的整数转换为该代码外部的整数? (爪哇)的主要内容,如果未能解决你的问题,请参考以下文章

如何在熊猫中将 if/else 转换为 np.where

nyoj 98-成绩转换 (if, else if)

如何将 if else 逻辑转换为动态选择?

创建一个互斥的代码路径列表

将 Blade If Else 转换为 Vue If Else

对于 iO,我有一个 if / else 代码块,对 UISwitch 中的变化做出反应。在某些情况下如何将 uiswitch 设置回关闭?