2014-09-23 28 views
0

我有10的矢量容量和5的大小。我试图通过在方法padVectorWithZeores()中填充其余的空格,现在向量看起来像像这样:用零长度的向量填充空的空格

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

是'yourMainMethod'你的主要方法是什么?为什么没有这样定义? 'howManyOffAndPositive()'定义在哪里?这些都是愚蠢的问题,可能与您的问题无关,但如果人们不得不花费大量时间试图调试代码,甚至无法编译代码,那么您应该花更多时间来制定问题。 – jedwards 2014-09-23 11:04:39

回答

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循环。

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