[英]Convert array into array from absolute values only
我無法將負數組元素轉換為絕對數組。 到目前為止,IVE制作了既包含負值又包含正值的數組,但是我必須將它們轉換為絕對值,以便計算數組的平方根。 有什么建議么?
public static void main(String[] args) {
int min = -100;
int max = 100;
int[] array = new int[201];
for (int i = 0; i < array.length; i++) {
array[i] = min + (int) (Math.random() * ((max - min) + 1));
//System.out.println(array[i]);
}
int[] array2 = new int[array.length];
for (int j = 2; j < array.length; j += 3) {
array2[j] = array[j];
//System.out.println(array[j]);
double[] result = new double[array2.length];
for (int i = 0; i < array2.length / 3; i++) {
array2[i] = Math.abs(i);
result[j] = Math.sqrt(array[j]);
System.out.println(array[i]);
}
您的倒數第三行是錯誤的,您需要:
result[j] = Math.sqrt(array2[j]);
您在i
(索引)上而不在數組元素上調用Math.abs()
。 另外,將abs的結果存儲到array2[i]
,然后在另一個數組和元素( array[j]
)上調用Math.sqrt()
)。 還要檢查您的for循環索引是否以所需的方式迭代字段(對我而言,for循環語句似乎有些奇怪)。
您必須清楚地描述您的意圖,尚不清楚您是否想要數組的每個第三元素,而不是每個元素。
但是,有多種方法可以達到結果。
您可以創建一個List
來存儲每個第三個元素的平方根
List<Double> result1 = new ArrayList<>(); for (int j = 2; j < array.length; j += 3) { result1.add(Math.sqrt(Math.abs(array[j]))); }
如果您想使用數組,請像這樣
double[] result2 = new double[array.length / 3]; for (int j = 2; j < array.length; j += 3) { result2[j / 3] = Math.sqrt(Math.abs(array[j])); }
在這兩個示例中,我們調用Math.abs
來獲取絕對值,並調用Math.sqrt
來獲取平方根。
這是完整的代碼
public static void main(String args[])
{
int min = -100;
int max = 100;
int[] array = new int[201];
for (int i = 0; i < array.length; i++) {
array[i] = min + (int) (Math.random() * ((max - min) + 1));
}
List<Double> result1 = new ArrayList<>();
for (int j = 2; j < array.length; j += 3) {
result1.add(Math.sqrt(Math.abs(array[j])));
}
double[] result2 = new double[array.length / 3];
for (int j = 2; j < array.length; j += 3) {
result2[j / 3] = Math.sqrt(Math.abs(array[j]));
}
System.out.println(result1);
System.out.println(Arrays.toString(result2));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.