2016-11-12 45 views
-1

当我尝试编译此代码时,出现以下错误,该代码应该创建不使用泛型的自定义Java数组。我很确定这是不正确创建阵列,但我不确定。如何调用自定义Java数组

任何帮助将非常感谢!谢谢!

当前编译错误摘录:

51: error: unreported exception Exception; must be caught or declared to be thrown strList.add("str1"); 

自定义数组类:

public class MyList { 

Object[] data; // list itself. null values at the end 
int capacity; // maximum capacity of the list 
int num; // current size of the list 
static final int DEFAULT_CAPACITY = 100; 

public MyList() { 
    this(DEFAULT_CAPACITY); // call MyList(capacity). 
} 
public MyList(int capacity) { 
    this.capacity = capacity; 
    data = new Object[capacity]; // null array 
    num = 0; 
} 
public void add(Object a) throws Exception { 
    if (num == capacity) { 
     throw new Exception("list capacity exceeded"); 
    } 
    data[num] = a; 
    num++; 
} 
public Object get(int index) { 
    // find the element at given index 
    if (index < 0 || index >= num) { 
     throw new RuntimeException("index out of bounds"); 
    } 
    return data[index]; 
} 
public void deleteLastElement() { 
    // delete the last element from the list 
    // fill in the code in the class. 
    if (num == 0) { 
     throw new RuntimeException("list is empty: cannot delete"); 
    } 
    num--; 
    data[num] = null; 
} 
public void deleteFirstElement() { 
    // delete first element from the list 
    for (int i = 0; i < num - 1; i++) { 
     data[i] = data[i + 1]; 
    } 
    data[num - 1] = null; 
    num--; // IMPORTANT. Re-establish invariant 
} 


public static void main(String[] args) { 
    MyList strList = new MyList(); 
    strList.add("str1"); 
    strList.add("str2"); 
    System.out.println("after adding elements size =" + strList); 
} 


} 
+0

如果答案被接受,你应该将其标记为这样...(下答案得分V符号) – ItamarG3

回答

0

您需要声明main这样做,这将引发CAN例外:

public static void main(String[] args) throws Exception{ 
... 

strList.add(...)try-catch块:

... 
try{ 
    strList.add("str1"); 
    strList.add("str2"); 
} catch(Exception e){ 
    e.printStackTrace(); 
} 
+1

你永远需要声明'抛出RuntimeException' ,我认为你的意思是抛出异常。 –

+0

这两个工作。但为了一般性,'抛出异常'更好。 – ItamarG3

+1

和捕捉RuntimeException将不会修复编译器错误在这种情况下,或者 – luk2302