我的向量容量为10,大小为5.我试图通过在方法padVectorWithZeores()
中使用零来填充其余空格,现在向量看起来像这样: / p>
2 -1 4 5 3
我想要得到的是
2 -1 4 5 3 0 0 0 0 0
我试图在for循环中尝试,但我一直在
2 -1 4 5 3 0
并且它没有用零填充其余空格
import java.util.*;
public class VectOfLongs {
private long[] theNumbers;
private int size, capacity;
public void padVectorWithZeroes() {
for(int i=size; i<capacity; i++){
theNumbers[capacity]=0;
}
size++;
}
public static void yourMainMethod() {
VectOfLongs v = new VectOfLongs();
v.insert(2); v.insert(-1); v.insert(-2);
v.insert(4); v.insert(5); v.insert(3);
System.out.println(v);
System.out.println(v.howManyOddAndPositive());
v.padVectorWithZeroes();
System.out.println(v);
}
public VectOfLongs() {
size = 0;
capacity = 5;
theNumbers = new long[capacity];
}
public void insert(long l) {
if (size==capacity) {
long[] tmp = new long[capacity+5];
capacity += 5;
for (int i=0; i<size; i++)
tmp[i] = theNumbers[i];
theNumbers = tmp;
}
theNumbers[size++] = l;
}
答案 0 :(得分:0)
public void padVectorWithZeroes() {
for(int i=size; i<capacity; i++){
theNumbers[capacity]=0;
}
size++; /// What is this?
}
您想设置size = capacity
吗?
另请注意,Java language specification表示当您创建新long
时,它会自动填充为零(与C不同)。所以你不需要for
循环。
答案 1 :(得分:0)
根据一些假设,可能是这个块:
for(int i=size; i<capacity; i++){
theNumbers[capacity]=0;
}
应该是
for(int i=size; i<capacity; i++){
theNumbers[i]=0; // Note the array index changed
}
还有其他更深层次的问题,但至少在没有ArrayIndexOutOfBoundsException
的情况下进行编译和运行。
修改:此处的工作示例:http://ideone.com/dU09QD