Array List bearbeiten?
Hallo zusammen

Benötige eure Unterstützung bei zwei Aufgaben die ich versucht habe zu lösen.

Leider bisher ohne Erfolg.

Aufgabe 1

Die Klasse Person sieht wie folgt aus:

public class Person {
   public String name;
   public int jahrgang;
   
   public Person(String n, int j) {
      this.name = n;
      this.jahrgang = j;
   }
}

Ersetze den Namen der zweiten Person mit "Peter" in dem du den Namen im bestehenden Objekt anpasst. Das bestehende Objekt soll also nicht überschrieben, sondern nur geändert werden.

import java.util.ArrayList;
public class Test {

   public static void main(String[] args) {
   
      ArrayList<Person> personen = new ArrayList<Person>();
      Person p1 = new Person("Hans",1997);
      Person p2 = new Person("Petra",1998);
      personen.add(p1);
      personen.add(p2);

Meine falsche Antwort:

Person p2 = Person("Peter", 1998);

Weitere Aufgabe:

Die Klasse Person2 sieht wie folgt aus:

public class Person2 {
   private String name;
   
   public Person2(String n) {
      this.name = n;
   }
   
   public String getName() {
      return name;
   }
   
   public void setName(String n) {
      name = n;
   }
}

Ersetze den Namen der zweiten Person mit "Fred" in dem du den Namen im bestehenden Objekt anpasst. Das bestehende Objekt soll also nicht überschrieben, sondern nur geändert werden.

import java.util.ArrayList;
public class Test {

   public static void main(String[] args) {
   
      ArrayList<Person2> personen2 = new ArrayList<Person2>();
      personen2.add(new Person2("Franz"));
      personen2.add(new Person2("Franziska"));


Meine falsche Antwort: 
personen2.set(1, new Person("Fred"));


Vielen Dank euch für die Hilfe und Erklärungen.

Java, Array
Eine Methode um zu testen ob es ein Nachbar gibt?

Hallo, ich muss bei meiner Aufgabe die Klasse Field um eine Methode boolean hasNeighbor(int, int, int) erweitern, sodass die ersten Parameter x- und y-Koordinaten sind und der dritte Parameter die Richtung. Die Methode soll zurückgeben ob es an der übergebenen Stelle, in die Richtung eine Verbindung zum Nachbarn gibt. Aber das schwierige ist, dass es ohne Schleife oder Verzweigung aus der erstellten getNeighborhood Methode mit Bitoperationen bestimmt werden muss. Ich hoffe jemand kann mir helfen, da ich noch ein Anfänger bin.

class Field
{
    /**
     * Die Dateinamen der Bodengitterelemente, die direkt mit einer
     * Rotation 0 verwendet werden können. Der Index ergibt sich
     * aus der Summe der folgenden Zahlen:
     * 1: In Richtung 0 (+1, 0) gibt es eine Verbindung.
     * 2: In Richtung 1 (0, +1) gibt es eine Verbindung.
     * 4: In Richtung 2 (-1, 0) gibt es eine Verbindung.
     * 8: In Richtung 3 (0, -1) gibt es eine Verbindung.
     */
    private static final String[] NEIGHBORHOOD_TO_FILENAME = {
        "grass",
        "path-e-0",
        "path-e-1",
        "path-l-0",
        "path-e-2",
        "path-i-0",
        "path-l-1",
        "path-t-1",
        "path-e-3",
        "path-l-3",
        "path-i-1",
        "path-t-0",
        "path-l-2",
        "path-t-3",
        "path-t-2",
        "path-x"
    };


    /**
     * Die Feldbeschreibung. Jede zweite Spalte und Zeile enthält die
     * eigentlichen Zellen. Dazwischen sind die Nachbarschaften
     * vermerkt.
     */
    private final String[] field;


    Field(final String[] field)
    {
        this.field = field;


        for (int y = 0; y < field.length; y += 2) {
            for (int x = 0; x < field[y].length(); x += 2) {
                new GameObject(x / 2, y / 2, 0, NEIGHBORHOOD_TO_FILENAME[getNeighborhood(x, y)]);
            }
        }
    }

    private char getCell(final int x, final int y)
    {
        if (x >= 0 && y >= 0 && y < field.length && x < field[y].length()) {
            return field[y].charAt(x);
        }
        else {
            return ' ';
        }
    }


private int getNeighborhood(final int x, final int y)
    {
        // Die (x, y)-Versätze für die einzelnen Prüfrichtungen
        final int[][] neighbors = {{1, 0}, {0, 1}, {-1, 0}, {0, -1}};

        int neighborhood = 0;

        int bit = 1;

        for (final int[] offsets : neighbors) {
            if (getCell(x + offsets[0], y + offsets[1]) != ' ') {
                neighborhood += bit;
            }
            bit *= 2;
        }
        return neighborhood;
    }

    static void test()
    {
        new GameObject.Canvas(5, 5, 96, 96);
        new Field(new String[] {
            "O-O-O-O  ",
            "|   |    ",
            "O O-O-O O",
            "| | | | |",
            "O-O-O-O-O",
            "| | | | |",
            "O O-O-O O",
            "    |   |",
            "O-O-O-O-O"
        });
    }
}
Java, Array, Programmiersprache

Meistgelesene Beiträge zum Thema Array