Ich soll fuer die Schule selbst einen Stack programmieren. Intern speicher ich das ganze als Object-Array:
Die Methode Object[] get(int from, int to) kompeliert aber nicht richtig weil "can't find returnArray.length" und "returnArray requieres ein Array". Da frage ich jetzt einfach hä?
Java:
import java.util.*;
/**
* Beschreiben Sie hier die Klasse eclipseworkerStack.
*
* @author (Ihr Name)
* @version (eine Versionsnummer oder ein Datum)
*/
public class eclipseworkerStack
{
// Instanzvariablen - ersetzen Sie das folgende Beispiel mit Ihren Variablen
private Object[] stack;
private Scanner sc=new Scanner(System.in);
private int erweiterungszaehler=0;
/**
* Konstruktor für Objekte der Klasse eclipseworkerStack, als leerer Array fixer Laenge.
*/
public eclipseworkerStack(int laenge)
{
while(laenge<1){
laenge=gibInt("Die Laenge muss groesser gleich 1 sein gibt sie erneut ein:");
}
stack=new Object[laenge];
}
/**
* Konstruktor für Objekte der Klasse eclipseworkerStack mit einem Array.
*/
public eclipseworkerStack(Object[] array)
{
stack=array;
}
public Object[] getStack(){
return stack;
}
/**
* Konstruktor für Objekte der Klasse eclipseworkerStack als null
*/
public eclipseworkerStack()
{
stack=new eclipseworkerStack(1000).getStack();
}
public void add(Object[] array){
for(int i=0; i<array.length; i++){
add(array[i]);
}
}
public void add(Object a){
if(erweiterungszaehler<stack.length && stack[erweiterungszaehler]==null){
stack[erweiterungszaehler]=a;
erweiterungszaehler++;
}else{
int b=stack.length+1;//macht Sinn wegen der Methode add(Object[] array)
Object[] newStack=new Object[b];
for(int i=0; i<stack.length; i++){
newStack[i]=stack[i];
}
newStack[stack.length]=a;
stack=newStack;
}
}
public Object get(int i){
if(i<0 || !(i<stack.length)){
return "Can't find object!";
}
return stack[i];
}
public Object[] get(int from, int to){
if((from<0 || !(from<stack.length)) || (to<0 || !(to<stack.length)) || !(from<to)){
String[] errorArray= new String[1];
errorArray[0]="Can't find elements";
return errorArray;
}
Object returnArray=new Object[to-from];
for(int i=0; i<returnArray.length; i++){
for(int j=from; j<=to; j++){
returnArray[i]=stack[j];
}
}
return returnArray;
}
/*
*Der Benutzer wird zur auf der Konsole zur Eingabe eines Long aufgefordert, dieser wird zurueck gegeben.
*@param auf: String
*@return int
*/
private int gibInt(String auf){
System.out.println(auf);
while(sc.hasNext() && !sc.hasNextInt()){
System.out.println("Fehler bei der Eingabe! "+auf);
sc.next();
}
return sc.nextInt();
}
}