使用循环中声明的变量或在循环外声明它们

时间:2016-12-08 13:50:39

标签: java arrays loops

我是java的初学者和一般的编程,我在一个问题上做了标记。

int[][]table = new int[numberOfShortTables][legnthOfShortTable]   

for(int i = 0; i < numberOfShortTables; i++) {
    char[]shortTable = sc.nextLine().toCharArray();
    for(int k = 0;k<legnthOfShortTable;k++){
        table[i][k]=shortTable[k];
    } 
}   

稍后在代码中,我需要同时使用table[][]shortTable[]

我的问题是: 是否有可能以一种方式在循环内声明一个变量,它可以在它之外使用吗?

如果不可能,我想知道如何在循环外声明shortTable[]并在其中使用sc.nextLine().toCharArray();

4 个答案:

答案 0 :(得分:0)

变量的范围在声明它的代码块中,所以不,你不能在循环中声明变量然后使用在外面。

答案 1 :(得分:0)

要直接回答您的问题,您需要做的就是首先使用char[]shortTable;或类似的东西在循环外声明var,然后使用shortTable = ...在循环内分配它。这只是正常的变量范围,循环没有什么特别之处。

你可以用循环变量本身做同样的事情。 int i;几行,然后是for (i = 0....

答案 2 :(得分:0)

嗨所以看起来你需要稍微阅读一下范围..

为了回答你的问题你现在的方式你将无法在for循环之后使用char [] shortTable,所以只需将它提升到for循环之上,你就可以使用它了。如果您需要在其他方法中使用它,请参阅下面的更多信息。 (注意尽可能避免静电作为初学者,如果你不理解100%的含义,它会给你带来无尽的麻烦)

简而言之,您可以获得3种类型的Classes范围

  • private:这意味着您只能在该类
  • 中访问该变量或方法
  • public:这意味着可以从有权访问实例化对象的任何内容访问该类外的变量或方法。
  • protected:这意味着扩展该类的任何内容都可以访问该变量或方法。

当您在类级别定义变量时,它们将可用于该类中的所有方法。

当您在方法中定义变量时,该方法中的所有循环/条件检查都可以访问它,即in for,while和if语句。

当你在for,while和if语句中定义变量时,变量只能在该循环中访问(将其视为方法内的方法,变量仅可用于定义它的方法。)< / p>

希望有一点了解范围。

答案 3 :(得分:0)

  

我的问题是:是否有可能以一种方式在循环内声明一个变量,它可以在它之外使用吗?

不,不可能。

  

如果不可能,我想知道如何在循环外声明shortTable []并使用sc.nextLine()。toCharArray();在里面。

如果您计划在循环之外使用它,则不必在循环内声明shortTable []。只需在循环外声明它。这样做也允许你在循环中使用它。