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



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

如何制作我的代码,以便 int base = y,指数 = 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");
}
}

}

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

除此之外,您不应该使用if (x == x1)因为这会检查您的输入是否等于字符串 x1 的内存地址,因此会打印出"我看不懂!要检查字符串是否相等,您要使用if (x.equals(x1)).

使用String x = words.toString();进一步读取用户的输入并没有做您希望它做的事情,因为它会立即跳到 if 部分传递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");
}
}

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

最新更新