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