【问题标题】:How can I use variables that I find the value of in a loop outside of that loop?如何使用在该循环之外的循环中找到值的变量?
【发布时间】:2015-11-17 21:57:07
【问题描述】:

我想使用 row 和 col 作为我的二维数组的参数,但不能,因为我找不到方法,因为我的变量是循环的本地变量。我的问题是如何将我为 row 和 col 找到的值设置为数组的参数。

int list [] [] = new int [row] [col];
    boolean done = false;
    while (done = false)
    {
        for (int counter = 3; counter <= 15; counter++)
        {
            if (num%counter == 0)
            {
                int row = counter ;
                int col = num/counter;
                done = true;
            }          
        }
    }

【问题讨论】:

  • while (done = false) 应该是while (done == false)
  • 如果 num 的值为 1 会怎样?
  • @Lashane 或者更好:while (!done)
  • 不好意思在这里提一下。我的程序使用户只为 num 输入偶数值。
  • @RyanMiller 好的,如果 num 的值为 2 会怎样?

标签: java loops parameters local nested-loops


【解决方案1】:

你需要在循环外声明它们:

    boolean done = false;
    int row = -1;
    int col = -1;
    while (done == false)
    {
        for (int counter = 3; counter <= 15; counter++)
        {
            if (num%counter == 0)
            {
                row = counter ;
                col = num/counter;
                done = true;
            }          
        }
    }
    int list [] [] = new int [row] [col];

【讨论】:

  • 在定义之前不能引用字段
  • 更改后的答案更好,现在可以编译
【解决方案2】:
boolean done = false;
int row = -1;
int col = -1;

while (done == false)
{
    for (int counter = 3; counter <= 15; counter++)
    {
        if (num%counter == 0)
        {
            row = counter ;
            col = num/counter;
            done = true;
        }          
    }
}
System.out.println(row + " " + col);
int list [] [] = new int [row] [col];

【讨论】:

  • 每次检查 while 循环时,您仍在为 done 赋值
【解决方案3】:

除非你创建一个新数组,否则你不能这样做,因为静态数组有点静态。当然你可以切换到ArrayList来避免这些误解。

【讨论】:

  • 数组的参数不变。它们只取决于用户输入的数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-02
  • 2017-08-03
  • 2013-12-03
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
相关资源
最近更新 更多