我可以将列表中的每个元素分配给一个单独的变量吗?

Can I assign each element in a list to a separate variable?

我有一个包含 16 个数字的列表,我希望将它们设置为变量 n1-n16。我正在寻找类似于 How to assign each element of a list to a separate variable? 的东西,但是 java.

我的代码是:

 public void setVar()
  {
    //x = 16;
    cardNumR = cardNum;
    reversed = 0;
    while(cardNumR != 0) {
        digit = cardNumR % 10;
        reversed = reversed * 10 + digit;
        cardNumR /= 10;
    }
    ArrayList<Long> nums = new ArrayList<Long>(x);
    for (int x = 16; x > 0; x--)
    {
      nums.add(reversed % 10);
      reversed -= (reversed % 10);
      reversed /= 10;
    length = nums.size();
    if (length == 16)
    {
      System.out.println(nums);
    }
    }
  }

我的结果是:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6]

我想获取这些元素中的每一个并设置 n1 = 1n2 = 2n3 = 3 等等,这样 n16 = 6。我希望能够在最后做到这一点:

(2*n1) + n2 + (2*n3) + n4 + (2*n5) + n6 + (2*n7) + n8 + (2*n9) + n10 + (2*n11) + n12 + (2*n13) + n14 + (2*n15) + n16

有没有一种方法可以用循环来完成,这样我就不必一个一个地做?

你不需要那么多变量。改为使用循环:

int sum = 0;
for(int i = 0; i < nums.size(); i++) {
    if(i % 2 == 0) {
       // odd index
       sum += 2 * nums.get(i);
    } else {
       // even index
       sum += nums.get(i); 
    }  
}

好吧,我会使用数组

int [] array = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6};

或该列表:

List<Integer> nums = List.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4, 5, 6);

并应用以下公式:

数组

int result = 0;
for(int i = 0; i < array.length; i++) {
    result += (i % 2 == 0) ? 2 * array[i] : array[i];
}

或者如果您想避免使用模数 (%) 运算:

int result = 0
for(int i = 0; i < array.length; i+=2)
    result += 2 * array[i];

for(int i = 1; i < array.length; i+=2)
    result += array[i];

列表

int result = 0;
for(int i = 0; i < nums.size(); i++) {
    result += (i % 2 == 0) ? 2 * nums.get(i) : nums.get(i);
}

没有取模运算:

int result = 0
for(int i = 0; i < nums.size(); i+=2)
    result += 2 * nums.get(i); 

for(int i = 1; i < nums.size(); i+=2)
    result += nums.get(i);

Java 流:

int result = IntStream.range(0, nums.size())
                      .mapToLong(i -> (i % 2 == 0) ? 2 * nums.get(i) : nums.get(i))
                      .sum();