Arrays

D.gigi

Aktives Mitglied
Hallo zusammen ich hab eine frage die Fragestellung lautet:
a) Schreiben Sie ein Programm, das ein Array vom Typ int anlegt. Die Länge des Arrays ist zu Beginn des Programmablaufes noch nicht bekannt. Sie soll durch eine Eingabe des Benutzers (mit Scanner) bestimmt werden. Nachdem das Array angelegt ist soll es mit aufsteigenden, durch drei teilbaren Zahlen initialisiert werden, wobei das erste Element die Zahl 3 ist (3, 6, 9, …). b) Die Länge Ihres Arrays soll zwischen 20 und 40 liegen. Erweitern Sie Ihr Programm so, dass es nach Eingabe der Länge des Arrays prüft, ob diese zwischen 20 und 40 liegt. Ist die angegebene Zahl kleiner oder größer, soll der Benutzer aufgefordert werden, erneut einen Wert einzugeben, der gültig ist.

mein code hab ich erstellt zum ende hin kommt aber nur Mist raus wäre lieb wenn mir da jemand zeigt wo der Fehler liegt.

Java:
import java.util.Scanner;

public class Aufgabe_03 {

    public static void main(String[] args) {
        
        int arraySize;
        
        System.out.println("Bitte geben sie die Array Länge ein: ");
        Scanner sc = new Scanner(System.in);
        arraySize = sc.nextInt();
        
        int[] Zahlxy = new int [arraySize];
        
        for(int i = 20; i < 40; i++)
        {
        if (i%3==0)
        {
        System.out.println(i+ " ");
        }
        if ( i < 20 || i > 40 );
        System.out.println("Nochmal: ");
        Scanner sb = new Scanner(System.in);
                
}}}
 
Erstends, formatiere deinen Code. Es ist wahnsinnig einfach in nicht formatierten die Orientierung und den Faden zu verlieren. Daher lasse diesen immer von der IDE formatieren, am besten automatisch beim speichern.

Java:
import java.util.Scanner;

public class Aufgabe_03 {
    public static void main(String[] args) {    
        int arraySize;
        
        System.out.println("Bitte geben sie die Array Länge ein: ");
        Scanner sc = new Scanner(System.in);
        arraySize = sc.nextInt();
        
        int[] Zahlxy = new int [arraySize];
        
        for(int i = 20; i < 40; i++) {
            if (i % 3 == 0) {
                System.out.println(i+ " ");
            }
            
            if (i < 20 || i > 40);

            System.out.println("Nochmal: ");
            Scanner sb = new Scanner(System.in);         
        }
    }
}

Jetzt wo der Code auch gut formatiert ist sieht man sehr schoen die Probleme, naemlich dass das alles so richtig gar keinen Sinn ergibt.

Also, laut Aufgabe muss das Array zwischen 20 und 40 Elementen fassen. Das bedeutet du musst die Benutzereingabe schon pruefen ob diese die korrekte Laenge hat. Das muss vor dem erzeugen des Arrays passieren. Also am besten die Eingabe in der while]-Schleife welche prueft ob die Groesze zwischen 20 und 40 liegt.

Danach musst du durch das Array laufen, mit einer einfachen for-Schleife ueber das Array. und die einzelnen Elemente befuellen. Da es aufsteigend Werte sein sollen welche durch drei teilbar sind, scheint es relativ einfach das Array zu befuellen da jeder Eintrag einfach (index + 1) * 3 entspricht. Das musst du nur in einer einfachen Schleife machen.
 
Erstends, formatiere deinen Code. Es ist wahnsinnig einfach in nicht formatierten die Orientierung und den Faden zu verlieren. Daher lasse diesen immer von der IDE formatieren, am besten automatisch beim speichern.

Java:
import java.util.Scanner;

public class Aufgabe_03 {
    public static void main(String[] args) {   
        int arraySize;
       
        System.out.println("Bitte geben sie die Array Länge ein: ");
        Scanner sc = new Scanner(System.in);
        arraySize = sc.nextInt();
       
        int[] Zahlxy = new int [arraySize];
       
        for(int i = 20; i < 40; i++) {
            if (i % 3 == 0) {
                System.out.println(i+ " ");
            }
           
            if (i < 20 || i > 40);

            System.out.println("Nochmal: ");
            Scanner sb = new Scanner(System.in);        
        }
    }
}

Jetzt wo der Code auch gut formatiert ist sieht man sehr schoen die Probleme, naemlich dass das alles so richtig gar keinen Sinn ergibt.

Also, laut Aufgabe muss das Array zwischen 20 und 40 Elementen fassen. Das bedeutet du musst die Benutzereingabe schon pruefen ob diese die korrekte Laenge hat. Das muss vor dem erzeugen des Arrays passieren. Also am besten die Eingabe in der while]-Schleife welche prueft ob die Groesze zwischen 20 und 40 liegt.

Danach musst du durch das Array laufen, mit einer einfachen for-Schleife ueber das Array. und die einzelnen Elemente befuellen. Da es aufsteigend Werte sein sollen welche durch drei teilbar sind, scheint es relativ einfach das Array zu befuellen da jeder Eintrag einfach (index + 1) * 3 entspricht. Das musst du nur in einer einfachen Schleife machen.
also macht bei mir nun alles kein sinn? ich hätte gedacht das es bis zur ersten System.out.println(i+" ");
noch richtig sei.
und ich weiss nicht ganz wie ich das mache, dass wenn der wert kleiner 20 oder größer als 40 ist ich ausgeben soll das es einen neuen wert ausgeben soll.
wäre sehr nett wenn du es mir einwenig näher bringen könntest und danke schonmal für deine Hilfe.
 
also macht bei mir nun alles kein sinn? ich hätte gedacht das es bis zur ersten System.out.println(i+" ");
noch richtig sei.
Es macht zumindest nicht das, was gefordert ist.
Nachdem das Array angelegt ist soll es mit aufsteigenden, durch drei teilbaren Zahlen initialisiert werden, wobei das erste Element die Zahl 3 ist (3, 6, 9, …).
Das machst Du ja noch nicht. Und so lange a) nicht erfüllt ist, solltest Du b) nicht anfangen.

Mein Tipp bei sowas ist immer, den Algorithmus erst einmal selbst durchzuspielen.
- Du fragst nach einer Zahl.
- Du legst ein Array in der Größe der eingegebenen Zahl an.
Wie geht es weiter? Formuliere es einmal in Worten.
 
Es macht zumindest nicht das, was gefordert ist.

Das machst Du ja noch nicht. Und so lange a) nicht erfüllt ist, solltest Du b) nicht anfangen.

Mein Tipp bei sowas ist immer, den Algorithmus erst einmal selbst durchzuspielen.
- Du fragst nach einer Zahl.
- Du legst ein Array in der Größe der eingegebenen Zahl an.
Wie geht es weiter? Formuliere es einmal in Worten.
die zahl soll durch den Benutzer eingeben werden, sodass es dann durchgespielt werden kann und diese dann immer mit aufsteigenden, durch drei teilbaren Zahlen initialisiert werden kann. Das habe ich dann ja mit der for-schleife versucht und hab dann gedacht ich könnte diese dann direkt so vergeben, das sie sobald sie kleine 20 oder grösser 40 ist den Benutzer sagen kann er soll ne neue eingabe versuchen.
Dem ist aber nicht so und ich weiß ehrlich gesagt auch nicht wie ich nun ran gehen soll.
LG
 
Dem ist aber nicht so und ich weiß ehrlich gesagt auch nicht wie ich nun ran gehen soll.
Teile die Aufgabe in kleinere Teile und löse sie Stück für Stück.

Lese eine Benutzereingabe ein.
Erzeuge ein Array mit der richtigen Größe.
Initialisiere das Array nach Vorgabe.

Die Sache mit der Länge zwischen 20 und 40 mach erst zum Schluss. Es geht dann darum, dass du nach dem Einlesen der Benutzereingabe und vor dem Erzeugen des Arrays (und dem Rest) erst noch Prüfen musst, ob die Länge korrekt ist (und entsprechend mit eine neuen Eingabe reagieren). Dafür brauchst du dann noch eine passende Schleife.
 
Teile die Aufgabe in kleinere Teile und löse sie Stück für Stück.

Lese eine Benutzereingabe ein.
Erzeuge ein Array mit der richtigen Größe.
Initialisiere das Array nach Vorgabe.

Die Sache mit der Länge zwischen 20 und 40 mach erst zum Schluss. Es geht dann darum, dass du nach dem Einlesen der Benutzereingabe und vor dem Erzeugen des Arrays (und dem Rest) erst noch Prüfen musst, ob die Länge korrekt ist (und entsprechend mit eine neuen Eingabe reagieren). Dafür brauchst du dann noch eine passende Schleife.
aber wie soll ich es den Array mit einer richtigen Größe erzeugen wenn ich die Größe ja nicht angeben soll ?
 
aber wie soll ich es den Array mit einer richtigen Größe erzeugen wenn ich die Größe ja nicht angeben soll ?
Das hast Du doch schon richig gemacht:
Java:
    public static void main(String[] args) {
        
        int arraySize;
        
        System.out.println("Bitte geben sie die Array Länge ein: ");
        Scanner sc = new Scanner(System.in);
        arraySize = sc.nextInt();
        
        int[] Zahlxy = new int [arraySize];

Was @temi meinte: Du sollst erst alle anderen Aufgabenteile lösen und wenn das erledigt ist, dann kümmest Du Dich um die Validierung der eingegebenen arraySize, die ja zwischen 20 und 40 liegen soll.
 
Das hast Du doch schon richig gemacht:
Java:
    public static void main(String[] args) {
       
        int arraySize;
       
        System.out.println("Bitte geben sie die Array Länge ein: ");
        Scanner sc = new Scanner(System.in);
        arraySize = sc.nextInt();
       
        int[] Zahlxy = new int [arraySize];

Was @temi meinte: Du sollst erst alle anderen Aufgabenteile lösen und wenn das erledigt ist, dann kümmest Du Dich um die Validierung der eingegebenen arraySize, die ja zwischen 20 und 40 liegen soll.
Okey super ich habs geschafft Könnt ihr mir vielleicht noch sagen, wie ich eine rückwärtsausgabe mache?
 

Zurück
Oben