【问题标题】:How to refer to an Array outside of scope/menu?如何引用范围/菜单之外的数组?
【发布时间】:2012-11-25 22:37:44
【问题描述】:

大家好,问一个简单的问题。我在下面创建一个 Java 菜单是一段代码示例。我想知道我是否在“if”语句中设置了 2 个数组,如何再次引用这些数组。我知道由于范围的原因,当移出 if 语句时,数组会被破坏。如果选择了选项 P,我想再次引用数组。

public static void determineOption (char option) {

        if (option == 'A') {

        int class_number = Console.getInt("Enter how many students between 1-10");

        while (class_number < 1 || class_number > 10)
        class_number = Console.getInt("Enter how many students between 1-10");

        System.out.println("");


        String[] name = new String[class_number];
        int[] score = new int[name.length];

        for (int i=0; i<class_number; i=i+1) 
        {
            name[i] = Console.getString("Enter Name");
            score[i] = Console.getInt("Enter score");
        }

        }
        else if (option == 'P') {


        }

【问题讨论】:

  • if之外声明你的数组引用,并在里面初始化它。请记住,您还需要使用外部默认值初始化您的数组。
  • 嗯。等等,你需要多说一点。因为,当数组在您的if 中初始化时,您的else if 将不会被执行。因此,访问else if 中创建的数组是没有意义的。那里的数组将独立于您在 if 中创建它的方式创建。

标签: java arrays if-statement scope


【解决方案1】:

将声明放在作用域的较高位置,如有必要,可能放在类上。换句话说,将数组从方法的局部变量更改为类上的变量。

【讨论】:

    【解决方案2】:

    if 块之外声明该数组并在需要时对其进行初始化。

    【讨论】:

      【解决方案3】:

      这都是范围的问题。在 if 语句之外声明数组以将其放在方法本身的范围内,这样您就可以在整个方法中使用它(从其声明行到方法末尾)。如果您需要在各种方法中使用该数组,您可能需要通过将其设为类字段来将该数组保留更长时间。

      请注意,如果您的数组的初始化取决于不同的条件,您必须在使用前进行检查,因为它可能还没有被初始化。

      【讨论】:

        【解决方案4】:

        根据您的逻辑,HashMap 似乎适用于此。

        HashMap<String,Integer>
        

        您的键是名称,值是分数。您可以将其定义为类变量,并在 if else if 情况下都使用。

        【讨论】:

          猜你喜欢
          • 2013-05-02
          • 1970-01-01
          • 1970-01-01
          • 2013-12-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-11-26
          • 2014-10-11
          相关资源
          最近更新 更多