gpt4 book ai didi

java - 使用java在数组中查找具有不同绝对值的数字

转载 作者:行者123 更新时间:2023-11-30 08:03:32 24 4
gpt4 key购买 nike

我正在尝试编写一个程序来打印出具有唯一绝对值的数字。这是我的尝试:

import java.util.*;
public class MyClass {

static ArrayList<Integer> aCopy;

public static void main(String[] args)

{
int myArray[]= {-5, 4,-6,8,-4,6,13};

System.out.println(Arrays.toString(myArray));

aCopy = new ArrayList<>();
for(int i=0; i<myArray.length; i++)
{ aCopy.add(myArray[i]); }

System.out.println("Numbers with unique abs. value are:");
findDifferentAbsoluteValues(myArray);
System.out.println(aCopy);
}

public static boolean findDifferentAbsoluteValues (int[] anArray)
{
for (int i=0; i<anArray.length;i++)
{
for(int j=i+1;j<anArray.length; j++)
{
if ( Math.abs(anArray[i]) == Math.abs(anArray[j]) )
{
aCopy.remove(anArray[i]);
return false;
}
}
}
return true;
}
}

但它给出了错误的输出。我(还)不是很流利的 java,所以我主要关心的不是解决方案是否优雅,只需要它工作))任何人都可以阐明什么是错的,好吗?

最佳答案

我理解你想取一系列不同的绝对值的问题。第一个错

aCopy.remove(anArray[i]);

不能删除这些,它们具有相同的值。您发现相同的值,但 anArray[i] 不值得删除。 ex: i=1 anArray[1]= 4. 你将删除这个

aCopy.remove(4);/* because anArray[1] = 4*/

第二个错误不返回false。因为循环没有完成。

我是这样理解问题和答案的;

 public static void main(String[] args)
{
int myArray[]= {-5, 4,-6,8,-4,6,13};

System.out.println(Arrays.toString(myArray));

aCopy = new ArrayList<>();

System.out.println("Numbers with unique abs. value are:");
findDifferentAbsoluteValues(myArray);
System.out.println(aCopy);
}

public static void findDifferentAbsoluteValues (int[] anArray)
{
for (int i=0; i<anArray.length;i++)
{
Boolean dif =true;
for(int j=i+1;j<anArray.length; j++)
{
if ( Math.abs(anArray[i]) == Math.abs(anArray[j]) )
{
dif = false;
}
}
if(dif == true)
aCopy.add(anArray[i]); //if you want absolute value aCopy.add(Math.abs(anArray[i]))
}
}

关于java - 使用java在数组中查找具有不同绝对值的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202407/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com