Java 如何从if-else语句中提取值

Java 如何从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

目前,我正试图建立一个程序,生成一个随机数的测验与集运算,并要求您解决赚取分数。我用if-else语句设置每个问题,正确答案为25,错误答案为0。但是,当我试图从if-else语句外部将这些数字相加时,程序无法识别它们已经设置了值。任何帮助都会被劝阻,这是我到目前为止的代码副本 包osu.cse1223

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,这段代码不会编译太多,因为这个建议最终让我再次朝着正确的方向前进!!非常感谢。