我目前正在尝试创建一个程序,要求用户回答10个乘法问题,然后在答案正确或不正确的情况下输出,然后记录用户得到的答案数。我目前的代码如下所示,但是我无法让分数增加,因为每当我运行它时,分数始终保持在1.我想知道是否有人可以帮我解决这个问题
package Assignment1;
import java.util.Scanner;
import static java.lang.System.in;
public class Main {
public static void main(String[] args) {
for (int i = 0; i < 11; i++) {
int number1 = (int) (Math.random() * 10) + 10;
int number2 = (int) (Math.random() * 10) + 10;
Scanner input = new Scanner(in);
System.out.print("What is " + number1 + " * " + number2 + " ?");
int answer = input.nextInt();
while ((number1 * number2) != answer) {
System.out.print("Incorrect");
answer = input.nextInt();
}
if ((number1 * number2) == answer) {
System.out.println("Correct");
int score = 0;
score = score + 1;
System.out.println("Score is currently: " + score);
}
}
}
}
答案 0 :(得分:2)
为了解决您的问题,您需要了解变量lm = linear_model.LinearRegression()
model = lm.fit(X_train.values.reshape(-1,1), y_train)
。变量的scope
是简单的简单英语:它的生命周期。它的生命周期是在大括号之间定义的,我的意思是如果变量是在&#34; scope
&#34;之后创建的,它只会存在直到&#34; {
&#34 ;。还有其他情况,但暂时不要介意。
考虑到这一点,让我们分析一下这里的问题。在您的计划中,您希望得分为&#39;变量在所有计算下生存并通过将先前分数添加到新结果来保持变化,从而在每次迭代时产生新分数。 不要创建&#39;得分&#39;在每次迭代中。
请注意,您正在创建变量&#39;得分&#39;在每个循环上 - 导致其值从内存中删除(实际上,它的参考是在每个循环结束时(当它死亡时)正在被擦除以使其值在内存中丢失)和一个新的循环。得分&#39;变量是在下一次迭代中创建的。
所以,我想您现在知道如何更改代码了。您只需更改变量&#39;得分&#39;在循环之前 - 所以它是在&#34; }
&#34;之前创建的。来自{
循环,而不是在每次迭代时擦除和创建。
for
答案 1 :(得分:1)
您已在if块中声明了score
变量。因此,每次有正确的答案时,score
初始化为0,然后设置为1.将分数声明为实例变量,或者在main方法中声明局部变量(在for循环之前)
答案 2 :(得分:1)
如果您只想要10个问题,for循环应该从i = 1
到i < 11
,而不是i = 0
。此外,您需要将分数移动到for循环之外,否则每次循环重新开始时它将被声明为0。正如Telmo Vaz所说,这是由于变量的范围。我注意到的另一件事是,您可以使用score++
将1添加到分数,而不是score = score + 1
。我会让你进一步优化你。
import java.util.Scanner;
import static java.lang.System.in;
public class Main {
public static void main(String[] args) {
int score = 0;
for (int i = 1; i < 11; i++) { // 1 -> 10
int number1 = (int) (Math.random() * 10) + 10;
int number2 = (int) (Math.random() * 10) + 10;
Scanner input = new Scanner(in);
System.out.print("What is " + number1 + " * " + number2 + " ?");
int answer = input.nextInt();
while ((number1 * number2) != answer) {
System.out.print("Incorrect");
answer = input.nextInt();
}
if ((number1 * number2) == answer) {
System.out.println("Correct");
score++; // == (score = score + 1)
System.out.println("Score is currently: " + score);
}
}
}
}