Array – die neusten Beiträge

Java: Wie kann ich den Artikelpreis von einer Artikelliste ändern?

Hallo,

ich habe eine Klasse für die Verwaltung von Artikeln, die eine Bezeichnung, Nummer und einen Preis haben. Ich möchte hier den Preis mit einen gegebenen Prozent ändern.

Die Methode nimmt eine Liste von Artikeln und einen Prozent und ändert den Preis der Artikel. Die Methode habe ich im Kommentar gemacht.

import java.util.Arrays;

public class Article {
  private String bezeichnung; // ArtikelTitel
  private long artikelNr; // Artikelnummer
  private static double preis; // Einzelpreis des Artikels
  private static long AnzahlArtikel;
  private static long nextArtikelNr = 100;

  public Article(String bezeichnung, double preis) {
    this.bezeichnung = bezeichnung;
    Article.preis = preis;
    this.artikelNr = Article.nextArtikelNr++;
    Article.AnzahlArtikel++;
  }

  public Article(String bezeichnung) {
    this(bezeichnung, 0.0);
  }

  public long getartikelNr() {
    return this.artikelNr;
  }

  public String getbezeichnung() {
    return this.bezeichnung;
  }

  public static long getAnzahlArtikel() {
    return Article.AnzahlArtikel;
  }

  public double getPreis() {
    return Article.preis;
  }

  /*
   * public static void changePrices(Article[] articles, double percentage) {
   *
   * if (articles == null || articles.length == 0 || percentage < 0) {
   * return;
   * } else {
   * // Article[] result = new Article[articles.length];
   * double percentageArtikel;
   *
   * for (int i = 0; i < articles.length; i++) {
   * percentageArtikel = artciles[i].getPreis() * percentage;
   * preis += percentageArtikel;
   * }
   * }
   * return;
   *
   * }
   */

  public String toString() {
    return artikelNr + ", " + bezeichnung + ", " + preis;
  }
}
Java, Array, Programmiersprache

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

JAVA Arraylist Berechnen mit int und double und Abspeichern von Zwischenwerten?

Hallo Zusammen

Ich muss in einer Aufgabe int und Double Werte miteinander multiplizieren, siehe im Code bei TODO.

import java.util.ArrayList;

public class Einkauf {
	
	private ArrayList<Produkt> produkte = new ArrayList<Produkt>();

	public void addEinkauf(double preis, 
	                        int faktor, 
	                        int menge, 
	                        String name) {
		produkte.add(new Produkt(preis, faktor, menge, name));
	}
	
	public double getPunkte() {
		
// TODO: Punkte des Einkaufs berechnen und zurückgeben
    double punkte;  // sollte richtig sein 
    for (Produkt p : produkte){
        punkte = (preis*menge*faktor); // hier ist ein Fehler 
        produkte.save(punkte);
        return punkte;
    }
	}
}

Es sollen die Treuepunkte wie folgt berechnet werden: Pro CHF Umsatz gibt es einen Punkt. Rappenbeträge werden berücksichtigt: Kostet ein Produkt CHF 3.20, ergibt dies 3.2 Punkte. Zusätzlich kann bei jedem Produkt ein Faktor angegeben werden. Damit kann der Grossverteiler für bestimmte Produkte mehr Punkte ausschütten. Wenn beispielsweise ein Produkt für CHF 3.20 einen Faktor von 10 hat, gibt es für dieses Produkt 32 Punkte.

Für den oben gezeigten Einkauf beträgt das Punkte-Total 207.15.

Sprich, bei jedem Einkauf soll der zwischenwert gespeichert werden.

programmieren, Java, Array, Programmiersprache, Arraylist

Java: Wie kann ich eine Route mit beliebig vielen Zwischenhalten einlesen und im Array ausgeben?

Hallo zusammen.

Es soll ein Programmcode geschrieben werden, bei dem ein Anzahl Zwischenstopps, Start- und Endpunkt angegeben werden müssen. Alle Eingaben müssen im Array gespeichert und später wiedergegeben werden.

Wichtig ist:

  • Erster Wert ist mein Startpunkt, bspw. Köln.
  • Der letzte Arraywert ist mein Endpunkt, bspw. Berlin.

Irgendwas in meinem Code ist leider falsch. Es müssen definitiv zwei Schleifen vorhanden sein.

Könnt ihr mir bei der Korrektur meines Codes bitte helfen?

Besten Dank!

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    // Diesen Teil nicht anpassen
    Scanner keyScan = new Scanner(System.in);
    System.out.print("Anzahl Zwischenhalte: ");
    int anzahlVias = keyScan.nextInt();
    keyScan.nextLine();
    String [] strecke = new String[anzahlVias + 2];

    System.out.print("Reise von: ");
    // TODO: Start einlesen und im Array strecke speichern
    strecke[0] = keyScan.nextLine();

    System.out.print("Reise nach: ");
    // TODO: Ziel einlesen und im Array strecke speichern
    strecke[strecke.length - 1] = keyScan.nextLine();

    // TODO: Vias einlesen und im Array strecke speichern
    int counter = 0;

    while (counter < strecke.length) {
      for (int i = 0; i < strecke.length; i++) {
        for (int y = 0; y < 3; y++) {
          System.out.print("Via: ");
          strecke[1] = keyScan.nextLine();
          counter++;
        }

        System.out.println("Deine Route: "+ strecke[counter]);
      }

      // TODO: Route ausgeben
    }

    keyScan.close();
  }
}
Java, Array, Programmiersprache

Java: Wieso bekomme ich diesen Fehler ("ArrayIndexOutOfBoundsException: Index 9 out of bounds for length 9")?

Bei meinem Code kommt nach der Eingabe eines Wortes immer folgender Fehler.

Das ist alles von der Konsole:

Bitte geben Sie ein Wort für das B-Sprachen Spiel ein: Hallo
5
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 9 out of bounds for length 9
at B_SprachenSpiel/Lektion_7.B_SprachenSpiel.Spiel(B_SprachenSpiel.java:42)
at B_SprachenSpiel/Lektion_7.B_SprachenSpiel.main(B_SprachenSpiel.java:14)

Danach sollte eigentlich noch das Wort (in dem Fall Hallo) ausgegeben werden, nur dass es durch die Änderung dann Haballobo heißt. Das soll das Programm machen. Doch ich verstehe nicht, wieso immer wieder dieser Fehler kommt.

Folgendes ist mein kompletter Code von diesem Programm:

package Lektion_7;

import java.lang.reflect.Array;
import java.util.Scanner;

public class B_SprachenSpiel {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    System.out.print("Bitte geben Sie ein Wort für das B-Sprachen Spiel ein: ");
    String B = sc.nextLine();
    Spiel(B);

    // System.out.println("Das umgewandelte Wort lautet: " + Spiel(B));
  }

  public static void Spiel(String Wort) {
    char[] x = new char [100];
    x = Wort.toCharArray();
    System.out.println(x.length);
    int y = x.length;
    int lang = x.length;

    for (int i = 0; i < y; i++) {
      if (x[i] == 'a' || x[i] == 'e' || x[i] == 'i' || x[i] == 'o' || x[i] == 'u') {
        lang += 2;
      }
    }

    System.out.println(lang);
    char[] neu = new char[lang];

    for (int i = 0; i <= neu.length; i++) {
      if (neu[i] == 'a' || neu[i] == 'e' || neu[i] == 'i' || neu[i] == 'o' || neu[i] == 'u') {
        neu[i] = (char) (x[i] + 'b' + (char) x[i]);
      }
    }

    String z = x.toString();
    System.out.println("                         Das umgewandelte Wort lautet: " + String.valueOf(neu));
    // for (int i = 0; i <= x.length; i++)
    //		{
    //			System.out.print(x[i]);
    //		}
  }
}
Computer, programmieren, Java, Array, Informatik

Php array Werte zuordnen?

Hallo ich hätte noch eine kurze Frage:

Ich habe eine JSON Ausgabe (siehe Bild1), in der jedem Tag gemessene Werte zum Schlaf angelegt sind. Jetzt möchte ich jedem Tag (["date"], in gelb markiert, die drei jeweiligen Messwerte ["wakeupcount"], ["total_timeinbed"] und ["total_sleep_time"] (in rot markiert) zuordnen. Das "date" habe ich als array angelegt. Die drei Messwerte sind jedoch "objects". Nachdem ich die Messwerte ausgelesen habe, möchte ich diese in meiner Datenbank entsprechend anlegen (letzter Teil meines Codes).

Bild 1:

Dazu verwende ich folgenden Code (Zur besseren Übersicht habe ich dieses mal nur den [wakeupcount] Messwert in den Code gepackt):

{
    $sleepanalyzer_sum_result = array();


    foreach ($sleepanalyzer_sum_data->body->series as $serie) {
        $sleepanalyzer_sum_result[$serie->date] = $measure;
        $sleepanalyzer_sum_result[$serie->data->wakeupcount] = $wakeupcount;


    }


    echo "<pre>";
    print_r($sleepanalyzer_sum_result);
    echo "</pre>";


    foreach ($sleepanalyzer_sum_result as $date => $measures) {


        $sleepanalyzer_sum_query .= "INSERT INTO sleepanalyzer_sum_measures SET
                wakeupcount ='" . $wakeupcount . "',
                measure_timestamp =  '" . $date . "'
                                ;";
    }
    echo "<pre>";
    echo $sleepanalyzer_sum_query;
    echo "</pre>";
}

Meine Ausgabe sieht folgendermaßen aus:

Dabei habe ich das Problem, dass die einzelnen Messwerte nun auch als array angelegt sind. Wie schaffe ich es, dass diese jedoch dem einzelnen Datum als object zugeordnet werden? Dadurch passiert auch beim Einlesen der Datenbank der Fehler, dass ich die richtigen Werte nicht den richtigen Begriffen in meiner Tabelle zuordnen kann.

Vielen Dank!

Bild zum Beitrag
Computer, Array, Datenbank, PHP

Array in ein anderes Array absteigend sortieren - Java?

Hallo Zusammen,

ich würde gerne ein Array in ein anderes Array absteigend sortieren.

Wenn ich in der for-Schleife und auch im weiteren Verlauf immer den letzen Index, also hier 3 manuell eingebe, läuft mein Programm tadellos. Jedoch möchte ich nicht von einer bestimmten Array-Länge abhängig sein und deshalb die Abbruchbedingung "hoch.length" anstatt eines festen Indexes nutzen, damit ich das Array auch ggf. erweitern kann.

Hier habe ich aber irgendwo einen Fehler und finde einfach nicht warum ich einen "Index out of bound" Fehler in der kursiv markierten Zeile erhalte.

Kann mir vielleicht jemand sagen wo mein Fehler liegt?

Danke!

public static void main(String[] args) {
      //   Index   =            0,1,2,3
         int [] hoch = new int []{2,3,4,5};            
         // neues array "runter" erstellen mit der Länge von Array "hoch"
         int [] runter = new int [hoch.length];
         // Start bei 0, Ende bei hoch.length
         for(int i=0; i <= hoch.length; i++) {
         // Hilfsvariable "hilfe" einbauen     
         int hilfe;                                    
  // hoch.length ist mein letzter Durchgang, -1 da ich eine Position mehr habe als dass ich einen Index habe
         runter [i] = hoch [hoch.length -i -1];
         hilfe = runter [i];
         }     
         // Ausgabe
         System.out.println("Array hoch:" + " " + Arrays.toString(hoch));
         System.out.println("Array runter:" + " " + Arrays.toString(runter));
         }}
Computer, Schule, programmieren, Java, Array

Java: Wie kann ich die Werte für die Matrix einlesen, nachdem ich die Spalte und Zeile eingelesen habe?

Ich stecke bei einer Aufgabe leider etwas fest.

Schreiben Sie ein Programm  Matrix, welches ein zweidimensionales Array übergeben bekommt und die Summe aller Werte in diesem Array berechnet.
Das erste, von der Konsole übergebene Argument, ist die Anzahl der Zeilen. Das zweite die Anzahl der Spalten des Arrays. Die restlichen Argumente sind Werte, mit denen das Array gefüllt werden soll. Gehen Sie davon aus, dass nur ganze Zahlen (positiv und negativ) übergeben werden.
Ihr Programm soll erst die Summe und anschließend die gesamte Matrix zeilenweise ausgeben. Falls zu wenige, oder zu viele Argumente von der Konsole übergeben werden oder die übergebenen Größenwerte negativ sind, soll Ihr Programm eine Fehlermeldung ausgeben, welche das Wort  ERROR enthält.
Eine Matrix der Größe 0 x 0
0×0 zählt als valide Matrix und hat die Summe $0$.

Ich habe bereits einen Ansatz zum Einlesen der Matrix. Dieser funktioniert aber nicht so ganz und ist noch unvollständig, da ich bei einigen Sachen nicht weiter komme.

Zum Beispiel, wie ich die Werte einlesen soll, nachdem ich die Spalte und Zeile eingelesen habe.

public class Matrix {
  public static void main(String[] args) {
    int zeile = Integer.parseInt(args[0]);
    int spalte = Integer.parseInt(args[1]);
    int Werte = Integer.parseInt(args[2]);
    int sum = 0;

    int[][] matrix = new int[zeile][spalte];

    for (int i = 0; i < zeile; i++) {
      for (int j = 0; j < spalte; j++) {
        matrix[i][j] = ???
        sum = matrix[i][j] + matrix[i][j];
      }

      System.out.println(sum);
      System.out.println(matrix[i][j]);
    }            
Schule, programmieren, Java, Array, Matrix

Java Arrays richtig vergleichen?

Ich möchte in meinem Lotto-Programm ein Spieler-Tipp-Array mit einem Lotto-Wahl-Array vergleichen. Dazu habe ich mal zum Testen diesen Code erstellt.

Hier der Code zum Kopieren:

String[] LottoZahlen = new String[6];
String[] SpielerZahlen = new String[6];

LottoZahlen[0] = Integer.toString(12);
LottoZahlen[1] = Integer.toString(14);
LottoZahlen[2] = Integer.toString(7);
LottoZahlen[3] = Integer.toString(18);
LottoZahlen[4] = Integer.toString(5);
LottoZahlen[5] = Integer.toString(49);

SpielerZahlen[0] = Integer.toString(12);
SpielerZahlen[1] = Integer.toString(7);
SpielerZahlen[2] = Integer.toString(5);
SpielerZahlen[3] = Integer.toString(18);
SpielerZahlen[4] = Integer.toString(13);
SpielerZahlen[5] = Integer.toString(49);

int gewinn;
gewinn = 0;

for (int i = 0; i < 6; i++) {
  for (int ao = 0; i < 6; i++) {
    if (LottoZahlen[i].equals(SpielerZahlen[ao])) {
      gewinn++;
    }
  }
}

// das ist dann halt die Ausgabe...
switch (gewinn) {
  case 1:
    System.out.println("1er:  Der 5te Schein hat einen Lotto 1er erreicht...");
    break;
  case 2:
    System.out.println("2er:  Der 5te Schein hat es fast in den Gewinnpot geschafft!");
    break;
  case 3:
    System.out.println("$$$  GLÜCKWUNSCH! Der 5te Schein hat einen Lotto 3er erzielt!");
    break;
  case 4:
    System.out.println("$$$$  SUPER! Der 5te Schein hat einen Lotto 4er erzielt!");
    break;
  case 5:
    System.out.println("$$$$$ WIIILD! Der 5te Schein hat einen Lotto 5er erzielt!");
    break;
  case 6:
    System.out.println("$$$$$$ JACKPOT!!! Der 5te Schein hat einen Lotto 6er erzielt!");
    break;
  default:
    System.out.println("Leider Niete... Der 5te Schein hat keinen Gewinn erzielt!");
    break;
}

Es sollte eigentlich in der Konsole ausgegeben werden, dass ich einen Lotto-5er gewonnen habe aber es kommt nur ein Einer heraus.

Kann mir jemand helfen, eine Möglichkeit zu finden, alle Stellen des ersten Arrays mit allen Stellen des zweiten Arrays zu vergleichen?

Bild zum Beitrag
Computer, programmieren, Java, Array, Spiele und Gaming

Meistgelesene Beiträge zum Thema Array