Nummerierungen bei Sammlungen

Status
Nicht offen für weitere Antworten.
M

Mousé

Gast
Hallo ihr ... ich frag mich grad wie ich das mit den Nummerierungen anstelle.
Die Sammlung beginnt ja immer bei 0 zu zählen. Ich habe jetzt z.B. bei notiznummer 0 die Notiz "eins", bei notiznummer 1 die Notiz "zwei" und so weiter, genau wird es auch ausgegeben. Und das genau das möchte ich nicht ...die Zählweise wird intern natürlich weiter bei 0 beginnen...aber ich möchte das die Ausgabe mit Notiznummer 1 beginnt und auch die Notiz "eins" ausgibt? Wie könnte ich das lösen? Bei der Methode alle Notizen ausgeben klappt es schon. Vielleicht kann jemand helfen?
Code:
import java.util.ArrayList;

/**
 * Eine Klasse zur Verwaltung von beliebig langen Notizlisten.
 * Notizen sind nummeriert, um durch einen Benutzer referenziert
 * werden zu können.
 * In dieser Version starten die Notiznummern bei 0.
 */
public class Notizbuch
{
    // Speicher für eine beliebige Anzahl an Notizen.
    private ArrayList notizen;

    /**
     * Führe die Initialisierungen durch, die für ein Notizbuch
     * notwendig sind.
     */
    public Notizbuch()
    {
        notizen = new ArrayList();
    }

    /**
     * Speichere eine neue Notiz in diesem Notizbuch.
     * @param notiz die zu speichernde Notiz.
     */
    public void speichereNotiz(String notiz)
    {
        notizen.add(notiz);
    }

   /**
     * @return die Anzahl der Notizen in diesem Notizbuch.
     */
    public int anzahlNotizen()
    {
        return notizen.size();
    }

    /**
     * Entferne die Notiz mit der angegebenen Nummer aus
     * diesem Notizbuch, wenn sie existiert.
     * @param notiznummer die Nummer der zu entfernenden Notiz.
     */
    public void entferneNotiz(int notiznummer)
    {
        if(notiznummer < 0) {
            System.out.println("Diese Notiznummer ist nicht gültig.");
            // Keine gültige Nummer, nichts zu tun.
        }
        else if (notiznummer < anzahlNotizen()) {
            // Die Notiznummer ist gültig.
            notizen.remove(notiznummer);
        }
        else {
            // Keine gültige Nummer, nichts zu tun.
            System.out.println("Diese Notiznummer ist nicht gültig.");
        }
    }
    
  public void zeigeNotiz(int notiznummer)
  {
        if (notiznummer < 0) {
            System.out.println("Diese Notiznummer ist nicht gültig.");
            // Keine gültige Nummer, nichts zu tun.
        }
        else if (notiznummer < anzahlNotizen()) {
            // Die Notiznummer ist gültig.
            System.out.println(notizen.get(notiznummer));
        }
        else {
            // Keine gültige Nummer, nichts zu tun.
            System.out.println("Diese Notiznummer ist nicht gültig.");
        }
    }
    public void alleNotizenAusgeben()
    {
    int index = 0;
    while (index < notizen.size()) {
    System.out.println((index+1)+": "+notizen.get(index));
    index++;
    }
}
}
 

Wildcard

Top Contributor
Genau das tust du doch schon :bahnhof:
Code:
    while (index < notizen.size()) {
    System.out.println((index+1)+": "+notizen.get(index));
    index++;
 
M

Mousé

Gast
Es gibt eine Methode bei der es klappt

Code:
public void alleNotizenAusgeben()
    {
    int index = 0;
    while (index < notizen.size()) {
    System.out.println((index+1)+": "+notizen.get(index));
    index++;
    }
}

Powered
und zwei Methoden bei denen es nicht klappt
Code:
public void entferneNotiz(int notiznummer)
    {
        if(notiznummer < 0) {
            System.out.println("Diese Notiznummer ist nicht gültig.");
            // Keine gültige Nummer, nichts zu tun.
        }
        else if (notiznummer < anzahlNotizen()) {
            // Die Notiznummer ist gültig.
            notizen.remove(notiznummer);
        }
        else {
            // Keine gültige Nummer, nichts zu tun.
            System.out.println("Diese Notiznummer ist nicht gültig.");
        }
    }
   
  public void zeigeNotiz(int notiznummer)
  {
        if (notiznummer < 0) {
            System.out.println("Diese Notiznummer ist nicht gültig.");
            // Keine gültige Nummer, nichts zu tun.
        }
        else if (notiznummer < anzahlNotizen()) {
            // Die Notiznummer ist gültig.
            System.out.println(notizen.get(notiznummer));
        }
        else {
            // Keine gültige Nummer, nichts zu tun.
            System.out.println("Diese Notiznummer ist nicht gültig.");
        }
    }
[
 

Wildcard

Top Contributor
Was heißt bei denen es nicht klappt?
Programmintern wirst du ja wohl nicht eine 1 als 0 interpretieren wollen?? :autsch:
Informatiker zählen nunmal von 0 an. Gewöhn dich dran
 
M

Mousé

Gast
...hmm ich glaub du verstehst mich falsch...

wenn ich EINE Notiz ausgeben will oder EINE bestimmte Notiz löschen will - so soll der Anwender für Notiz "Eins" auch die Speichernummer 1 angeben können. Programmintern wird aber mit Speicherplatz 0 gearbeitet, das ist klar.
Für den Anwender (Anzeige) soll die Reihenfolge bei 1 beginnen für das Programm bei 0.

Wie setze ich das jetzt um? Ich müsste für die Ausgabe bzw. Lösch-Methode ja eigentlich dann irgendwie (notiznummer+1) coden ???
 

Wildcard

Top Contributor
Der Anwender ruft aber keine Methoden auf. Wenn du fragst 'welche Notiz löschen' und bekommst eine 1 zurück, rufst du eben entferneNotiz(nummer-1) auf.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Nummerierung bei Sammlungen mit ausgeben Java Basics - Anfänger-Themen 55

Ähnliche Java Themen

Neue Themen


Oben