Java 如何从if-else语句中提取值
目前,我正试图建立一个程序,生成一个随机数的测验与集运算,并要求您解决赚取分数。我用if-else语句设置每个问题,正确答案为25,错误答案为0。但是,当我试图从if-else语句外部将这些数字相加时,程序无法识别它们已经设置了值。任何帮助都会被劝阻,这是我到目前为止的代码副本 包osu.cse1223Java 如何从if-else语句中提取值,java,if-statement,Java,If Statement,目前,我正试图建立一个程序,生成一个随机数的测验与集运算,并要求您解决赚取分数。我用if-else语句设置每个问题,正确答案为25,错误答案为0。但是,当我试图从if-else语句外部将这些数字相加时,程序无法识别它们已经设置了值。任何帮助都会被劝阻,这是我到目前为止的代码副本 包osu.cse1223 import java.util.Scanner; import java.util.Random; public class Project03a { public static voi
import java.util.Scanner;
import java.util.Random;
public class Project03a {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
System.out.println("Enter your name");
String Name = keyboard.next();
System.out.println("Hello " + Name + "!");
int upper = 100;
int lower = 10;
int i = (int) ((Math.random() * (upper - lower)) + lower);
System.out.println(i);
int a = (int) ((Math.random() * (upper - lower)) + lower);
int b = (int) ((Math.random() * (upper - lower)) + lower);
int ab = a + b;
int c = (int) ((Math.random() * (upper - lower)) + lower);
int d = (int) ((Math.random() * (upper - lower)) + lower);
int cd = c - d;
int e = (int) ((Math.random() * (upper - lower)) + lower);
int f = (int) ((Math.random() * (upper - lower)) + lower);
int ef = e/f;
int g = (int) ((Math.random() * (upper - lower)) + lower);
int h = (int) ((Math.random() * (upper - lower)) + lower);
int gh = g%h;
int finala = 0;
if (i%2 == 0) {
System.out.println("quiz one");
System.out.println("Question 1: " + a + "+" + b);
int answera = keyboard.nextInt();
if (answera == ab) {
System.out.println("Correct");
int totala = 25;
int finalb = finala + totala;
System.out.println(finalb);
} else {
System.out.println("Incorrect");
int totala = 0;
}
System.out.println("Question 2: " + c + "-" + d);
int answerb = keyboard.nextInt();
if (answerb == cd) {
System.out.println("Correct!");
int totalb = 25;
}else{
System.out.println("Incorrect");
}
System.out.println("Question 3:" + e + "/" + f);
int answerc = keyboard.nextInt();
if (answerc == ef){
System.out.println("Correct!");
int totalc = 25;
}else{
System.out.println("Incorrect :(");
}
System.out.println("Question 4:" + g + "%" + h);
int answerd = keyboard.nextInt();
if (answerd == gh){
System.out.println("Correct!");
int totald = 25;
}else{ System.out.println("Incorrect :(");
}
int score = totala + totalb + totalc +totald;
}else{
System.out.println("quiz two");
}此处,
totala
,totalb
,totalc
,totald
在本地声明。当您声明变量时,它将在块内部而不是外部可访问
有两种方法:
您可以在测验开始前声明并初始化totala
,totalb
,totalc
,totald
(与a
,b
,c
处于同一级别)
或
您可以保留变量
finala
(并找到更好的名称,如score
),然后在4个块中使用它来添加结果。使用其余变量初始化totala和finalb,并在if语句中操作它们。类似的声明
int totala = 0;
声明变量仅在其所包含的最小范围内使用,通常是最近的大括号{
。}
。因此,这里:
else {
System.out.println("Incorrect");
int totala = 0;
}
totala
只能在这两个大括号内使用,如果在其他范围内声明int totala
,则这是一个完全不同的变量
要声明可在多个位置使用的totala
,请声明
int totala;
在main
方法内部,但在任何其他花括号集外部。然后在分配时省略单词int
:
else {
System.out.println("Incorrect");
totala = 0; // will set the totala that you declared outside
}
(注意:虽然最小的范围通常是最近的花括号,但对于for
语句来说则不同:
for (int i = 0; i < something; i++) some-statement;
for (int i = 0; i < something; i++) { ... }
for(inti=0;i
int i
声明了一个i
,它可以在for
的的第一部分括号内使用,也可以在正在循环的语句或语句组内使用,但不在其他地方。还有其他特殊情况。)代码的问题与变量的范围有关
例如,在if中声明变量时。变量将仅存在于if的范围内
if(answer == ab)
{
int i = 0;
}
变量i将只存在于if循环中。必须声明变量totala、totalb ecc。。若并没有if,这段代码不会编译太多,因为这个建议最终让我再次朝着正确的方向前进!!非常感谢。