length, print, set, get, resize

David2456

Aktives Mitglied
Hallo
Kann mir einer einen Ansatz geben wie ich diese Methoden implementieren kann? Also es geht mir prinzipiell darum das die Methoden bei dem Aufruf array.print/set/get/resize funktionieren nicht selbst um die Methoden.

Danke schonmal
 

Anhänge

  • Unbenannt3.JPG
    Unbenannt3.JPG
    60,8 KB · Aufrufe: 37
  • Unbenannt4.JPG
    Unbenannt4.JPG
    92,5 KB · Aufrufe: 41

strußi

Top Contributor
hast du die Methoden schon implementiert?
wie im Text beschrieben, musst du die Methoden in der Klasse mit der Mainmethode implementieren.

zeig mal, was du an code schon fertig hast, egal ob noch etwas fehlt.
 

David2456

Aktives Mitglied
Die Methoden sind noch nicht geschrieben. Wollte erstmal wissen wie das mit dem z.B array.print(); funktioniert. Also das funktioniert so wie es da steht wenn ich die Mehtoden in der Main Class schreibe und nicht seperat in einer anderen, wie gewöhnlich bei Methoden. Hab ich das richtig verstanden?
 

David2456

Aktives Mitglied
Die voherige Aufgabe habe ich nun gelöst. Nun zum Verständnis. Jetzt soll ich aber die Methoden in ResizableArray schreiben und nicht eine extra Klasse erstellen oder?
 

David2456

Aktives Mitglied
Ok jetzt habe ich die Aufgabe verstanden. Es wird ja eine neue Klasse namens array erzeugt. Jetzt ist meine Frage wie ich die Klasse schreibe damit sie wie ein Array ausgegeben wird

edit Doch nicht. Ich habe keine Ahnung wie ich anfangen soll
 
Zuletzt bearbeitet:

David2456

Aktives Mitglied
edit Ansatz?
Java:
public class ResizableArray {
        int[] data = new int[10]; // Backing array to store values.
       
        public static void main(String[] args) {
            ResizableArray array = new ResizableArray();
            array.print();
            for (int i = 0; i < array.length(); i++) {
                array.set(i, i);
            }
            array.print();
           // Out.println("Setting value 10 at index 10");
            //array.set(10, 10);
            //Out.println("Resizing array");
           // array.resize();
           // Out.println("Setting value 10 at index 10");
           // array.set(10, 10);
           // array.print();
           // Out.println("Value at index 10 is " + array.get(10));
        }
      
        public int length(){
            return data.length;
        }
      
     public int[] print() {
            return data;
        }
      
        public void set(int i){
  
         data[i] = i;
          
        }
}
 
Zuletzt bearbeitet von einem Moderator:

strußi

Top Contributor
print() soll das gesamte Array ausgeben, also for(object o : objects)(for-each-schleife) objects ist die referenz auf das array und object o musst du an deinen Datentyp anpassen.
set( int index, int value) testen ob index innerhalb der Arrayindices ist, wenn nicht Fehlermeldung wenn ja wert setzen
resize() neues Array mit doppelter Größe des alten Arrays erstellen und die Werte aus dem alten Array in den neuen kopieren und die Referenz anpassen.
 

Joose

Top Contributor
Deine set Methode erwartet nur einen Parameter, du übergibst aber 2 -> beide mal "i".
Deine setMethode sollte 2 Parameter erwarten: 1.Parameter ist der Index, dessen Wert du setzen willst, 2.Parameter ist der Wert den du setzen willst.
 

David2456

Aktives Mitglied
Ok funktioniert nun. In der Aufgabe steht aber auch das wenn der Fehler out of bounds auftritt, nur der Text ausgegeben werden soll und nicht die Fehlermeldung von java. Wie funktioniert das denn? break?
 

David2456

Aktives Mitglied
Java:
public class ResizableArray {
       



        int[] data = new int[10]; // Backing array to store values.
       
       
        public static void main(String[] args) {
           
           
            ResizableArray array = new ResizableArray();
            array.print();
            for (int i = 0; i < array.length(); i++) {
                int i2 = i;
                array.set(i, i2);
            }
               
            array.print();
            Out.println("Setting value 10 at index 10");
            array.set(10, 10);
            //Out.println("Resizing array");
           // array.resize();
          //  Out.println("Setting value 10 at index 10");
         //   array.set(10, 10);
          //  array.print();
          //  Out.println("Value at index 10 is " + array.get(10));
        }
       
        public int length(){
            return data.length;
        }
       
         public void print(){
                Out.print("[");
                int kommas = 0;
                for (int i=0;i <data.length;i++){
                    kommas = kommas +1;
                    Out.print(data[i]);
                    if (kommas < data.length){
                        Out.print(",");
                    }
                }
                Out.print("]\n");
            }
       
        public void set(int i, int i2){
       
            if (i > data.length){
                Out.println("Index is out of bounds. Value was not set.\n");              
            }
            else data[i] = i2;
                          
        }
 

Bitfehler

Bekanntes Mitglied
Wir reden über die Set-Methode, oder?
Da gibt es zwei Varianten:
  1. Prüfe deine Parameter
    Ich würde deine if-Bedingung ein wenig abändern wollen. Es ist oftmals sinnvoller zu prüfen, ob die Parameter den Bedingungen entsprechen. In deinem Fall wäre es die Prüfung, ob i zwischen 0 und data.lenght-1 liegt. Sollte das der Fall sein, mache etwas. (Statt data.length kannst du auch deine length-Methode verwenden)
    Wenn nicht, dann (im else-Zweig) eine einfache Ausgabe wie du sie hast.
  2. Catch Exception

Edit:
Indem du einen get schreibst:
Code:
pubilc int get(int index){
return array[index];
}
(Beachte das zehnte Element, steht im index neun. Ein array-index beginnt bei 0. Ob, du das beachtest, bleibt dir überlassen) Zudem müsstest du hier wieder Zugriffe außerhalb eines gültigen Index behandeln.
 
Zuletzt bearbeitet:

David2456

Aktives Mitglied
Dankeschön. Das mit dem get dachte ich mir auch, habe s aber nicht so ausprobiert. War wegen der 10 verwundert, aber es funktioniert ja so
 

Neue Themen


Oben