我有这样的数组
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()