我试图编写一个可以解决指数问题的代码,并且可以从整数输入和字输入(即一,二......等)中解决指数问题。我几乎想出了整数部分,但是我仍然坚持使用" 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");
}
}
}
答案 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传递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");
}
}
答案 1 :(得分:1)
在整个for循环前面声明y和z。 你之前做过的就是你声明一个变量,你为这个变量分配了一个值,然后立即抛弃它。这不是python。 IDE应该给你一个警告。