hardanger hardanger - 21 days ago 6
Java Question

How to call a custom Java Array

I am getting the following error when I try to compile this code, which is supposed to create a custom Java array that doesn't use generics. I am pretty sure this is down to not creating the array properly, but I'm not sure.

Any help would be really appreciated! Thanks!

Current Compile Error Excerpt:

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


Custom Array Class:

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);
}


}

Answer

You need to declare that main throws can exceptions by doing this:

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

or

putting the strList.add(...) in a try-catch block:

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