Java 变量范围超出';如果';类中的循环主方法-不可用问题

Java 变量范围超出';如果';类中的循环主方法-不可用问题,java,variables,Java,Variables,我想储存弓箭手和野蛮人的价值。但是,在if语句之外,我无法访问numberOfArchersToBeTrained和numberofbarbarrianstobetrained变量。我做错了什么 最后一个System.out.println不工作,因为变量numberOfArchersToBeTrained在此不可用 public class ConsoleInteraction { /** * @param args */ public static vo

我想储存弓箭手和野蛮人的价值。但是,在
if
语句之外,我无法访问
numberOfArchersToBeTrained
numberofbarbarrianstobetrained
变量。我做错了什么

最后一个
System.out.println
不工作,因为变量
numberOfArchersToBeTrained
在此不可用

public class ConsoleInteraction {

    /**
     * @param args
     */
    public static void main(String[] args) {

        // Create a scanner so we can read the command-line input
        Scanner scanner = new Scanner(System.in);
        // Prompt for training or viewing camp
        System.out.print("What do you want to do: \n 1.Train Troops \n 2. View Troop Camp \n ");
        //Get the preference as an integer
        int preference = scanner.nextInt();

        int numberOfArchersToBeTrained;
        int numberOfBarbariansToBeTrained;

        //Show options based on preference
        if(preference == 1)
        {
            System.out.println("Whom do you want to train?\n 1.Archer \n 2.Barbarian \n 3.Mix \n Enter You preference:");
            int trooppreference = scanner.nextInt();
            if (trooppreference == 1)
            {
                System.out.println("How many Archers you want to train ? : ");
                numberOfArchersToBeTrained = scanner.nextInt();
            }
            else if (trooppreference == 2)
            {
                System.out.println("How many Barbarians you want to train ? : ");
                numberOfBarbariansToBeTrained = scanner.nextInt();
            }
            else if (trooppreference == 3)
            {
                System.out.println("How many Archers you want to train ? :");
                numberOfArchersToBeTrained = scanner.nextInt();
                System.out.println("How many Barbarians you want to train :");    
                numberOfBarbariansToBeTrained = scanner.nextInt();
            }
            else 
            {
                System.out.println("You have to select option 1, 2 or 3");
            }
        }
        else if (preference == 2)
        {
            System.out.println("Showing Camp to You");
        }
        else 
        {
            System.out.println("You can enter only option 1 or 2");
        }    

        System.out.println("Archers:"+ numberOfArchersToBeTrained);

        scanner.close();
    }
}

初始化
numberOfArchersToBeTrained
开始时,您的代码正在工作

 int numberOfArchersToBeTrained = 0;

如果prefence为2或3,numberOfArchersToBeTrained未初始化,则需要给出此变量值

您看到的实际错误消息是什么?它是说它找不到符号,还是说它没有初始化?
如果
不是任何类型的循环。对不起,我是说如果,谢谢。成功了。只是想知道(我是初学者)。如果我没有初始化,那么它不是被初始化为默认值吗?问这个问题是因为,我无论如何都在if块内操作变量,如果编译器不得不抱怨(关于没有初始化),为什么当我给它赋值时它不在if块内抱怨?抱歉,如果这是一个有点愚蠢的查询如果你初始化它会更好,但是你可以在这里找到更多信息:谢谢Semih。现在工作。有一个后续的疑问,我已经张贴在上面的帖子