Variablen Array Länge ändern.

Diskutiere Array Länge ändern. im Allgemeine Java-Themen Bereich.
N

Nico26

Hey. Ich will ein Programm programmieren mit einem Menü. Dort kann ich dann Menüpunkte auswählen. Jetzt hab ich das Problem dass das Array nicht erkannt wird.
package com.company;

Java:
public class Main {

    public static void main(String[] args) {
        var scan = new java.util.Scanner(System.in);
        boolean pruef = true;
        int anz = 0;

        do {
            System.out.println("1.) Zahlen Eingeben");
            System.out.println("2.) Zahlen ausgeben");
            System.out.println("3.) Zahlen sortieren");
            System.out.println("4.) File lesen");
            System.out.println("5.) File schreiben");
            System.out.println("0.) Programm beenden");
            int eingabe = scan.nextInt();

            if (eingabe == 1) {
                //Eingabe der Zahlen
                System.out.println("Bitte geben sie die Anzahl der Zahlen an die sie eingeben möchten");
                anz = scan.nextInt();
                int[] zahlen = new int[anz];
                for (int i = 0; i <= anz - 1; i++) {
                    zahlen[i] = scan.nextInt();
                }
                System.out.println(anz);

            } else if (eingabe == 2) {
                //Ausgabe der Zahlen
                ...
        } while (pruef == true);

    }
}
(habe den untöriogen Teil des Programmes entfernt) Ich möchte das Array mit einer irrelevanten Array länge vor der Do-While schleife erstellen und dann in der schleife die Länge ändern. Wie funktioniert das?
 
Zuletzt bearbeitet von einem Moderator:
MoxxiManagarm

MoxxiManagarm

@Barista Er hat das i in den eckigen Klammern, es wird nur als kursiv interpretiert, weil er keine Code-Tags verwendet hat.
 
T

temi

Variablen haben einen Gültigkeitsbereich siehe Kommentar
Java:
public class Main {

    public static void main(String[] args) {
        var scan = new java.util.Scanner(System.in);
        boolean pruef = true;
        int anz = 0;

        do {
            System.out.println("1.) Zahlen Eingeben");
            System.out.println("2.) Zahlen ausgeben");
            System.out.println("3.) Zahlen sortieren");
            System.out.println("4.) File lesen");
            System.out.println("5.) File schreiben");
            System.out.println("0.) Programm beenden");
            int eingabe = scan.nextInt();

            if (eingabe == 1) { // hier beginnt der Gültigkeitsbereich
                //Eingabe der Zahlen
                System.out.println("Bitte geben sie die Anzahl der Zahlen an die sie eingeben möchten");
                anz = scan.nextInt();
                int[] zahlen = new int[anz]; // hier deklarierst du das Array
                for (int i = 0; i <= anz - 1; i++) {
                    zahlen[i] = scan.nextInt();
                }
            
                System.out.println(anz);
            } // hier endet der Gültigkeitsbereich und die Variable "zahlen" wird wieder zerstört
            else if (eingabe == 2) {
                //Ausgabe der Zahlen
                // die Variable "zahlen" ist hier nicht mehr bekannt
                ...
        } while (pruef == true);
    }
}
Edit: Aber das war gar nicht die Frage, oder?

Die Länge eines Arrays kann man nicht ändern. Du kannst ein Array mit einer festen Länge erzeugen. Soll es länger/kürzer sein, dann musst du ein neues erzeugen und den Inhalt kopieren.
 
Zuletzt bearbeitet:
J

JustNobody

(habe den untöriogen Teil des Programmes entfernt) Ich möchte das Array mit einer irrelevanten Array länge vor der Do-While schleife erstellen und dann in der schleife die Länge ändern. Wie funktioniert das?
Um einmal auf die Frage ein zu gehen:
Ein Array kann in der Größe nicht verändert werden. Du kannst aber ein neues Array erstellen und einer Variablen zuweisen.

int[] myArray;
Dies deklariert eine Variable myArray. Diese Variable kann also an einer Stelle deklariert werden, so dass der Gültigkeitsbereich so ist, wie notwendig.

Nun kannst Du an anderen Stellen ein neues Array erstellen und zuweisen, also sowas:
myArray = new int[5];
Das erzeigt ein neues int Array mit 5 Plätzen (index 0-4).

Also evtl. willst Du einfach nur die Deklaration vor die Schleife packen. In der Schleife / der if Anweisung kannst Du dann Zahlen einlesen oder so ...
 
mihe7

mihe7

Vielleicht solltest Du auch die restlichen Kommentare lesen, die lösen nämlich das Problem ;)
 
Thema: 

Array Länge ändern.

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben