I finally managed to write my first Java assignment. The point of the assignment was to implement an ArrayList with Strings which was supposed to behave like a stack.
However, when I run the code in Eclipse I get some kind of error saying:
Exception in thread "main" øv2.Stack@c723704
java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at øv2.Stack.peek(Stack.java:30)
at øv2.Stack.main(Stack.java:47)
I am not sure why this is happening, here is my code:
public class Stack {
private ArrayList<String> stringList = new ArrayList<String>();
RandomStringGenerator rsg = new RandomStringGenerator();
private void push(String i){
stringList.add(i);
}
private String Pop(){
if (stringList.size() >= 1){
String positionInArray = stringList.get(stringList.size() - 1);
stringList.remove(stringList.size() - 1);
return positionInArray;
}
else {
return null;
}
}
private String peek(int i){
if (i >= 0 && i >= (stringList.size() - 1)){
return stringList.get(stringList.size() - 1 - i);
}
else{
return null;
}
}
private int getSize(){
return stringList.size();
}
public static void main (String [] args){
Stack stack = new Stack();
stack.push("1");
stack.push("2");
stack.push("3");
System.out.println(stack);
System.out.println(stack.peek(3));
System.out.println(stack.Pop());
System.out.println(stack);
}
}
import java.util.Random;
public class RandomStringGenerator {
private int randomNumber;
private Random randomNumberGenerator = new Random();
public String randomStringGenerator(){
int randomNumber = randomNumberGenerator.nextInt();
String randomString = Integer.toString(randomNumber);
return randomString;
}
}
Thank you for your time!
peek. Think about what you are doing and why it is causing that.i >= 0 && i >= (stringList.size() - 1)this makes no sense, your range check is flawed.stringList.size() > 0