如何将 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 代码中的整数转换为该代码外部的整数? (爪哇)的主要内容,如果未能解决你的问题,请参考以下文章
将 Blade If Else 转换为 Vue If Else
对于 iO,我有一个 if / else 代码块,对 UISwitch 中的变化做出反应。在某些情况下如何将 uiswitch 设置回关闭?