该方法返回一个数组,其中包含参数数组中的正元素。 为此,请计算数组中正元素的数量并将获得的值存储在变量中 nElements 类型为整数,声明大小为 nElements 的 double 组输出,复制正数元素 的 in 到数组输出中,并返回数组输出。如果数组中的所有元素均为非正数, 你的方法应该返回一个大小为 1 的数组,并且返回数组的唯一元素被分配 值-1。
我的问题是,当我运行程序时,它在线程“main”java.lang.NegativeArraySizeException 中显示异常,我不知道如何将其取出并仅返回正元素。
Java 代码:
public static double [] partialPositiveArray(double [] in)
{
int nElements = 0;
for(int i = 0; i < in.length; i++)
{
if(in[i] > 0)
{
nElements = (int)in[i];
}
else if(in[i] <= 0)
{
nElements = -1;
}
}
double [] output = new double[nElements];
for(int i = 0; i < in.length; i++)
{
output[i] = nElements;
}
return output;
}
最佳答案
使用此代码,您将添加所有正数。本例中的总和为 60.7,对于所有负数,它将在负数组中写入 -1。在本例中两次。
代码:
public class NegativeAndPositiveNumbers {
public static void main(String[] args) {
double[] arr = {25.0, -7.0, 10.7, 25.0, -64.0};
System.out.println(partialPositiveArray(arr));
int negative[] = negativeArray(arr);
for (int i = 0; i < negative.length; i++){
System.out.print(negative[i] + " ");
}
}
public static double partialPositiveArray(double[] in) {
double nElements = 0;
for (int i = 0; i < in.length; i++) {
if (in[i] > 0) {
nElements += in[i];
}
}
return nElements;
}
public static int[] negativeArray(double[] in) {
int[] negativeWithZero = new int[in.length];
int index = 0;
for (int i = 0; i < in.length; i++) {
if (in[i] <= 0) {
negativeWithZero[index] = -1;
index++;
}
}
int[] negative = new int[index];
for (int j = 0; j < negative.length; j++){
negative[j] = negativeWithZero[j];
}
return negative;
}
}
我认为它可以更容易地解决,但无论如何它都有效。我希望一切都清楚
关于java - 如何创建一个新数组并将另一个数组中的所有正元素复制到新数组中并返回它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60746638/