如何在新数组中获取数据,但不是全部(Java)



我有这样的数组

int[] array = {5, 100, 20, 66, 16};
price = new int[] {5, 100, 20, 66, 16};
for(int i = offset; i < price[price.length - readLength]; i++) {
price[i] = price[i] * (discount / 100);
System.out.println(price[i]);
}

在这之后,我只需要用旧数组的三个数字来获得新数组。我该怎么做?之后我需要这样的东西[100,20,66]

您可以使用Arrays.copyOfRange来获得以下内容:

price = Arrays.copyOfRange(array, 1, 4),然后可以对每个元素进行操作。

或者,您可以使用从原始阵列中获得新阵列

double[] discounted_price = 
Arrays.stream(array,1,4).
mapToDouble(el ->el - el*(discount/100.0)).toArray();

您不需要使用副本来传递到流,您可以在Arrays.stream本身中指定from, to

@WJS是正确的,你可能需要从价格中减去价格*折扣,这取决于你打算如何使用折扣。

您的代码有一些问题。

  • 除非price已经声明为数组,并且它应该是一个双数组,否则以下内容将不起作用,因为您可能希望结果是一个浮点数
double[] price = new double[3];
  • 这将是一个问题,除非折扣是双倍的或浮动的。此外,考虑一下,如果某件东西的价格是2美元,折扣是10%,那么成本将是:2.00 - (2.00 * .10)。所以你应该改变:
price[i] = price[i] * (discount/100);

price[i] = price[i] - (price[i] * (discount/100.));

要复制数组,您可以使用for循环或前面提到的Arrays.copyOfRange() method。如果你想要随机值,你必须进行单独的赋值。for循环看起来像:

int k = 0 ;
for (int i = 1; i < 4; i++) { // copies values at indices 1,2, and 3
price[k++] = array[i];
}

尝试使用:

Arrays.copyOfRange()

最新更新