Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java数组,将项添加到下一个空索引中_Java_Arrays_Iteration - Fatal编程技术网

Java数组,将项添加到下一个空索引中

Java数组,将项添加到下一个空索引中,java,arrays,iteration,Java,Arrays,Iteration,在Java中,有没有一种方法可以将值添加到下一个未声明的索引中,而不是添加到特定的索引中?说: int[] negativeArray = new int[21]; int[] positiveArray = new int[21]; 两种不同类型的整数有两个数组,例如负整数和正整数。我在这里循环,我想让它像一个堆栈一样工作(我对堆栈不太了解,但据我所知,你不需要遍历它的索引,你只需要弹出/推送项目到它上面),如果它是一个负数,那么把数字放在负数数组中下一个未声明的索引点上 我想到了一种方法,

在Java中,有没有一种方法可以将值添加到下一个未声明的索引中,而不是添加到特定的索引中?说:

int[] negativeArray = new int[21];
int[] positiveArray = new int[21];
两种不同类型的整数有两个数组,例如负整数和正整数。我在这里循环,我想让它像一个堆栈一样工作(我对堆栈不太了解,但据我所知,你不需要遍历它的索引,你只需要弹出/推送项目到它上面),如果它是一个负数,那么把数字放在负数数组中下一个未声明的索引点上

我想到了一种方法,用一些额外的代码来实现这一点。我将数组中的所有值都设置为0。当检查变量是负值还是正值时,我将通过数组循环到下一个值0。一旦我找到它,我就知道我在什么索引上了。不过,这需要一些努力,有没有更简单的方法



编辑:一些注释说明了在不使用基本数组的情况下执行此操作的不同方法。我被分配了这个,我被要求使用一个数组来获得积分…

这就是为什么制作了
列表。只需使用以下内容:

List<Integer> negativeIntegers = new ArrayList<Integer>(21);
...
negativeIntegers.add(-127);
List negativeIntegers=newarraylist(21);
...
负整数。加上(-127);

如果实际使用数组作为堆栈(因此,只会在堆栈顶部添加或删除项),则可以在另一个变量中保留数组中的下一个可用索引

int[] array = new int[21];
int nextIndex = 0;

public void push(int e) {
    array[nextIndex] = e;
    ++nextIndex;
}

public int pop() {
    --nextIndex;
    return array[nextIndex];
}
如果删除可以发生在任何地方,那么我看不到比迭代数组以找到空闲位置更好的解决方案

退房

它与ARRG的解决方案基本相同,但代码行较少:

Stack<Integer> negative = new Stack<Integer>();
Stack<Integer> positive = new Stack<Integer>();

public void putMyNumber(int number) {
  // Taking 0 as "positive"
  if (number >= 0) {
    positive.push(number); //Auto-boxing
    return;
  }
  negative.push(number);
}
Stack negative=新堆栈();
堆栈正=新堆栈();
公共无效putMyNumber(整数){
//将0视为“正”
如果(数字>=0){
正。按(数字);//自动装箱
返回;
}
负数。按(数字);
}

如果要创建一个包含正值和负值的数组,可以使用建议的算法:

public static void main(String[] args) throws Exception {
    int[] negativeArray = new int[3];
    int[] positiveArray = new int[3];

    int[] test = new int[] {1, -1, 2, -2, 3, -3};

    int posIndex = 0;
    int negIndex = 0;

    for (int i = 0; i < test.length; i++) {
        if (test[i] > 0) {
            positiveArray[posIndex++] = test[i];
        } else if (test[i] < 0) {
            negativeArray[negIndex++] = test[i];
        }
    }

    System.out.println(Arrays.toString(test)); //[1, -1, 2, -2, 3, -3]
    System.out.println(Arrays.toString(positiveArray)); //[1, 2, 3]
    System.out.println(Arrays.toString(negativeArray)); //[-1, -2, -3]
}
publicstaticvoidmain(字符串[]args)引发异常{
int[]negativeArray=新int[3];
int[]positiveArray=新int[3];
int[]test=新的int[]{1,-1,2,-2,3,-3};
int posIndex=0;
指数=0;
对于(int i=0;i0){
positiveArray[posIndex++]=test[i];
}否则如果(测试[i]<0){
negativeArray[negIndex++]=测试[i];
}
}
System.out.println(Arrays.toString(test));/[1,-1,2,-2,3,-3]
System.out.println(Arrays.toString(positiveArray));//[1,2,3]
System.out.println(Arrays.toString(negativeArray));//[-1,-2,-3]
}

@assylias噢,我以前从未用过,我会试试的。但问题是,我被要求使用数组,因为这是学校作业。发布关于家庭作业的问题是可以的,但请将问题标记为
家庭作业
:)在[nextIndex]中的元素在弹出后会发生什么变化?它会漏吗?我认为这个例子出现在有效的Java中。如果我们在pop方法中添加一些东西以使nextIndex处的元素无效,效果会更好。@Random:在我们存储对象的情况下,您是对的,如果我们不将对象从数组中删除,该对象就不会被垃圾收集。这对于整数(和其他基本类型)来说不是问题,因为您将要编写的“null”(也称为0)占用相同的内存量。