【问题标题】:Fill an array with powers of 3用 3 的幂填充数组
【发布时间】:2020-08-25 16:27:10
【问题描述】:
public class Power {

    public static void main(String[] args) {
        
        int base = 3, exponent = 9;

        int[] result = new int[10];
        System.out.println(result);

        while (exponent != 0)
        {
            result * base = result;
            --exponent;
            System.out.println(result);
        }
    }
}

我希望这段代码能够将 1*3 乘以 3,将其放入数组中,然后再次相乘,以此类推。基本上,它需要输出,1 3 9 27 81 243 729 2187 6561 19683。如何将其存储在数组中,并再次相乘?

【问题讨论】:

  • result * base = result; 你不能这样做。分配的目标必须在左侧。你打算写result = result * base吗?你也可以写result *= base。 (虽然实际上result是一个数组,所以不能相乘)

标签: java arrays loops


【解决方案1】:

您可以保留一个结果变量并继续将其保存到数组中:

int index = 0;
int[] result = new int[10];
int current = 1;
for (int i = 0; i < result.length; ++i) {
    result[i] = current;
    current *= 3;
}
System.out.println(Arrays.asString(result));

【讨论】:

    【解决方案2】:
    result[0] = 1;
    System.out.print(result[0] + " ");
    for (int i = 1; i < n; i++) {
        result[i] = result[i-1]*3;
        System.out.print(result[i] + " ");
    }
    

    让n 比您要打印的条目数少一。

    【讨论】:

      【解决方案3】:

      你的第一个问题是赋值需要左边的名字,右边的表达式;将result * base = result; 替换为result = result * base;。

      其次,result 是一个数组。您试图将其视为一个数字。

      第三,如果你想填充一个数组,使用 for 循环而不是你当前的循环:

      final int base = 3;
      
      final int[] result = new int[10];
      result[0] = 1;
      
      for (int i = 1; i < result.length; i++) {
          result[i] = result[i - 1] * base;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-09-15
        • 1970-01-01
        • 1970-01-01
        • 2019-01-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-01
        相关资源
        最近更新 更多