Nur Bestimmte Werte aus einem Array in ein anderes Speichern

LeeSin

Mitglied
Guten Morgen!:)

ich arbeite aktuell an einer Aufgabe bei der ich eine Integer Zahl einlesen soll, von dieser dann die Teiler in einem Array der länge -> 500 speichern soll. Das habe ich soweit auch geschafft jedoch, soll ich dann "nur" die Teiler(zahlen) in für mich zumindest am sinnvollsten ein neues Array speichern. Jedoch klappt das irgendwie nicht richtig, habe jetzt viel probiert aber komme nicht weiter. Zudem soll ich die "Teiler" dann bei der ausgabe nicht wie ein Array ausgeben also like [1,2,3,4] sondern sollen sie nur mit der leertaste getrennt werden.
Bin ich schon auf dem falschen weg oder geht das nur mit Strings indem ich z.b. die "Split()" methode verwende?

Hier mal mein Code was ich bisher geschafft habe:

Code:
import java.util.Arrays;
import java.util.Scanner;

public class DividersArrayResult {

    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        int input;
        int[] output;
        System.out.println("Please enter a Integer number to get the dividers: ");
        input = sc.nextInt();

        System.out.println("Your number: " + input);

        output = calculateDividers(input);
        System.out.println(Arrays.toString(output));

        sc.close();

    }

    public static int[] calculateDividers(int input) {
        int[] dividerArray = new int[500];
        int[] dividerArrayCopy = new int[input];
        for (int i = 1; i <= input; i++) {
            if (input % i == 0) {
                dividerArray[i] = i;

            }
            for (int j = 0; j < input; j++) {
                if (dividerArray[i] > 0) {
                    dividerArrayCopy[j] = dividerArray[i];
                }
            }
        }

        return dividerArrayCopy;
    }

}

Ich bedanke mich für jegliche Hilfe die ich hier kriegen kann!!

Mit freundlichen Grüßen
LeeSin
 

LeeSin

Mitglied
Wie groß müsste denn das neue Array sein, damit es sinnvoll ist?

Danke für deine Antwort :)!

Ich habe es so gedacht, das die Array - kopie, dann mindestens so groß sein muss wie die Zahl die der User eingeben hat. Also beispielsweise 6 -> muss mein Array auch 6 elemente beherbergen, wobei die 6 hat ja nur 4 teiler. Also müsste ich mein Array so groß machen so viele Teiler wie es gibt. Macht das Sinn?

Sollte ich dann beim ersten schleifen durchlauf eventuell eine Variable zählen lassen "teiler" die jedes mal mitzählt wenn einer gefunden wurde? und danach dann eine Array - kopie mit der mit der größe arrayCopy[teiler] ?

Liebe Grüße
 

mihe7

Top Contributor
Sollte ich dann beim ersten schleifen durchlauf eventuell eine Variable zählen lassen "teiler" die jedes mal mitzählt wenn einer gefunden wurde? und danach dann eine Array - kopie mit der mit der größe arrayCopy[teiler] ?
Sehr gut.

Bleiben wir aber nochmal kurz beim ersten Array. Du hast also jetzt einen Zähler, der in der Schleife die Anzahl der bisher ermittelten Teiler mitzählt. Kannst Du das ausnutzen, um die Zähler Teiler nacheinander (also lückenlos) im ersten Array abzulegen?
 

LeeSin

Mitglied
Sehr gut.

Bleiben wir aber nochmal kurz beim ersten Array. Du hast also jetzt einen Zähler, der in der Schleife die Anzahl der bisher ermittelten Teiler mitzählt. Kannst Du das ausnutzen, um die Zähler Teiler nacheinander (also lückenlos) im ersten Array abzulegen?

Leider stehe ich auf dem Schlauch: was ich jetzt überlegt hatte, das ich sage -> if(dividerArray != 0) und dann jeweils diese in das erste Array speicher, aber das funktioniert nicht so ganz, da es sich noch mit dem Gedanken beißt bei mir das ich man ein Array von seiner größer her nicht mehr verändern kann oder ?
Code:
public static int[] calculateDividers(int input) {
        int[] dividerArray = new int[500];
        int divider = 0;
        for (int i = 1; i <= input; i++) {
            if (input % i == 0) {
                dividerArray[i] = i;
                divider++;
                if (dividerArray[i] != 0) {
                    for (int j = 0; j < i; j++) {
                        dividerArray[j] = dividerArray[i];

                    }
                }
            }
        }

        return dividerArray;
    }

Wäre jetzt mal ohne das kopierte Array, funktioniert aber leider nicht. Ich benutze auch nicht die variable teiler weil mir nicht einfällt wie.
 
K

kneitzel

Gast
Also mich würde erst einmal die Logik interessieren:
Was willst Du wie machen? Kannst Du die Schritte einmal einfach in Worte fassen und aufschreiben?

Generell sollte man sich immer erst im klaren sein, was wann wie gemacht werden soll. Dazu einfach einmal grob anfangen und dann die Schritte weiter unterteilen!
 

LeeSin

Mitglied
Also mich würde erst einmal die Logik interessieren:
Was willst Du wie machen? Kannst Du die Schritte einmal einfach in Worte fassen und aufschreiben?

Generell sollte man sich immer erst im klaren sein, was wann wie gemacht werden soll. Dazu einfach einmal grob anfangen und dann die Schritte weiter unterteilen!
Servus! Danke für deine Antwort
1. Ich erstelle eine Methode um die teiler zu berechnen und übergebe diese Zahl.
2. Dann wie aus der Aufgabenstellung hervorgeht, erstelle ich ein Array mit der länge [500].
3. Dann gehe ich das Array am index i = 1 durch, da geteilt durch 0 nicht geht, und teile jeweils die eingebene zahl durch den index und schaue ob das ergebnis null ist, somit ist i = ein teiler von meiner eingeben zahl.
4. Speichere die teiler im Array.
5. jetzt möchte ich diese Werte nebeinander schreiben also als Ausgabe, im besten fall in ein neues Array? damit sie nebeinander stehen, das problem ist, die teiler sollen mit leertaste getennt werden.
6. Meine idee war ja das ich zählen lasse wie oft ein teiler vor kam, so groß dann das neue Array mache und die zahlen aus dem alle zahlen != 0 in das neue Array speicher.
Das funktioniert aber nicht.
 

mihe7

Top Contributor
Leider stehe ich auf dem Schlauch
Nimm einen Zettel mit 10 Zeilen (500 wäre etwas viel) für mögliche Teiler. Jetzt nimmst Du irgendeine Zahl, sagen wir mal 12.

Die Zahl 12 hat sechs Teiler: 1, 2, 3, 4, 6, 12. Nach Deiner Logik würdest Du den Teiler i in Zeile i eintragen. Würdest Du das auf dem Zettel auch so machen?

ZeileTeiler
11
22
33
44
5
66
7
8
9
10
Problem: die 12 hat keinen "Platz" mehr.

Oder würdest Du das nicht eher so aufschreiben?
ZeileTeiler
11
22
33
44
56
612
7
8
9
10
 

LeeSin

Mitglied
Nimm einen Zettel mit 10 Zeilen (500 wäre etwas viel) für mögliche Teiler. Jetzt nimmst Du irgendeine Zahl, sagen wir mal 12.

Die Zahl 12 hat sechs Teiler: 1, 2, 3, 4, 6, 12. Nach Deiner Logik würdest Du den Teiler i in Zeile i eintragen. Würdest Du das auf dem Zettel auch so machen?

ZeileTeiler
11
22
33
44
5
66
7
8
9
10
Problem: die 12 hat keinen "Platz" mehr.

Oder würdest Du das nicht eher so aufschreiben?
ZeileTeiler
11
22
33
44
56
612
7
8
9
10
Hah klasse, habe das glaube ich zumindest schon einmal jetzt hinbekommen, danke für den denkanstoß !
Code:
public static int[] calculateDividers(int input) {
        int[] dividerArray = new int[10];
        int divider = 1;
        for (int i = 0; divider <= input; divider++) {
            if (input % divider == 0) {
                dividerArray[i] = divider;
                i++;

            }
        }
        return dividerArray;

so wird es zumindest mal in der Reihenfolge ausgegeben! Zwar hängen die Nullen noch hinten dran, aber jetzt probiere ich mal das in ein neues Array zu verfrachten.

Ich melde mich, Sorry wenn Doppelpost.
 

LeeSin

Mitglied
Danke nochmal für die großzügige Hilfe!
Habe es jetzt geschafft in ein neues Array zu kopieren und die Werte stehen jetzt sauber da.
Code:
public static int[] calculateDividers(int input) {
        int[] dividerArray = new int[500];
        int divider = 1;
        int valueForNewArray = 0;

        for (int i = 0; divider <= input; divider++) {
            if (input % divider == 0) {
                dividerArray[i] = divider;
                i++;
                valueForNewArray = i;

            }
        }
        int[] dividerArrayCopy = new int[valueForNewArray];
        for (int i = 0; i < dividerArray.length; i++) {
            if (dividerArray[i] != 0) {
                dividerArrayCopy[i] = dividerArray[i];
            }
        }
        return dividerArrayCopy;
    }
Hat jemand für mich anstöße wie ich es löse das meine Elemente von dem kopierten Array, nu so ausgeben werden das sie mit einem leerzeichen getrennt sind -> input = 6 -> 1 2 3 6.
Ich kenne mich bis jetzt nur mit Strings aus das man diese mit der split() methode mit anderen "zeichen" trennen kann. Könnte ich dieses "int" array in ein "String" array casten und dann spliten mit einem leerzeichen?

Liebe Grüße!!
 

mihe7

Top Contributor
Habe es jetzt geschafft in ein neues Array zu kopieren
Sehr schön. Wenn Du Dir noch einen Gefallen tun willst, nimm den Schleifenzähler in die Schleife und den Teiler-Zähler nach außen.

Also statt
Java:
        int divider = 1;
        for (int i = 0; divider <= input; divider++) {

Java:
        int i = 0;
        for (int divider = 1; divider <= input; divider++) {

Außerdem kannst Du der Variablen i noch einen besseren Namen geben, z. B. dividerCount:
Java:
        int dividerCount = 0;
        for (int divider = 1; divider <= input; divider++) {

Jetzt kannst Du unten nämlich einfach auf dividerCount zugreifen und brauchst keine Prüfungen mehr
Java:
        int[] output = new int[dividerCount];
        for (int i = 0; i < dividerCount; i++) {
            output[i] = dividerArray[i];
        }

Hat jemand für mich anstöße wie ich es löse das meine Elemente von dem kopierten Array, nu so ausgeben werden das sie mit einem leerzeichen getrennt sind -> input = 6 -> 1 2 3 6.
Schleife über alle Elemente des Arrays?
 

LeeSin

Mitglied
Sehr schön. Wenn Du Dir noch einen Gefallen tun willst, nimm den Schleifenzähler in die Schleife und den Teiler-Zähler nach außen.

Also statt
Java:
        int divider = 1;
        for (int i = 0; divider <= input; divider++) {

Java:
        int i = 0;
        for (int divider = 1; divider <= input; divider++) {

Außerdem kannst Du der Variablen i noch einen besseren Namen geben, z. B. dividerCount:
Java:
        int dividerCount = 0;
        for (int divider = 1; divider <= input; divider++) {

Jetzt kannst Du unten nämlich einfach auf dividerCount zugreifen und brauchst keine Prüfungen mehr
Java:
        int[] output = new int[dividerCount];
        for (int i = 0; i < dividerCount; i++) {
            output[i] = dividerArray[i];
        }


Schleife über alle Elemente des Arrays?

Mihe7 ! Vielen Dank für die unterstützung :)
Vor allem für die optimierung von meinem Code das muss ich noch lernen.

Ja und mit der "Schleife über alle Elemente des Arrays" .. So simpel ist dann manchmal doch! :D

Also passt jetzt alles vielen Dank nochmal.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
B Bestimmte Werte aus einem String entnehmen Java Basics - Anfänger-Themen 3
HighLife Bestimmte Werte aus Array zählen Java Basics - Anfänger-Themen 15
L Bestimmte Werte eines Arrays ausgeben. Java Basics - Anfänger-Themen 3
Henri Bestimmte Werte eine XML-Datei ausgeben. Java Basics - Anfänger-Themen 8
C Array kopieren und nur bestimmte Werte speichern Java Basics - Anfänger-Themen 6
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
V Nur bestimmte Werte zulassen Java Basics - Anfänger-Themen 2
F Bestimmte Werte nicht beachten Java Basics - Anfänger-Themen 10
C Aus einer *.csv Datei bestimmte Werte Variablen zuweisen Java Basics - Anfänger-Themen 19
B Alle Zahlen finden, die 3 bestimmte Ziffern enthalten? Java Basics - Anfänger-Themen 9
K loop pausieren für eine bestimmte Anzahl? Java Basics - Anfänger-Themen 1
Cassy3 Binäre Bäume Rekursiv durchlaufen und bestimmte Elemente Zählen Java Basics - Anfänger-Themen 6
Schniffi Nur bestimmte Bilder aus einem Array auf Image Button anzeigen lassen Java Basics - Anfänger-Themen 3
W Bestimmte Zahlen bei Math.random ausschließen? Java Basics - Anfänger-Themen 31
J Bestimmte parameter aus Jsonfile auslesen Java Basics - Anfänger-Themen 15
T Bestimmte Zahlen ausgeben mit einer whilfe Schleife Java Basics - Anfänger-Themen 21
M Wie kann ich bei int-Variablen im exception handler auf bestimmte Strings reagieren? Java Basics - Anfänger-Themen 5
B Neue Liste erstellen, wenn Objekte bestimmte Referenz hat / Gruppierung von Einträgen Java Basics - Anfänger-Themen 12
B Nur eine bestimmte Anzahl an Arrays ausgeben Java Basics - Anfänger-Themen 9
M Regex für bestimmte Wörter bzw. bestimmte Zeichen erstellen Java Basics - Anfänger-Themen 5
B Von Array nur eine bestimmte Anzahl bekommen Java Basics - Anfänger-Themen 3
J Datei auslesen (nur bestimmte Stellen) Java Basics - Anfänger-Themen 2
B Denkanstoß benötigt: Emails an bestimmte Emailadresse schicken Java Basics - Anfänger-Themen 6
U Mehrfacheingabe auf bestimmte Parameter prüfen Java Basics - Anfänger-Themen 8
L String auf bestimmte zeichen untersuchen Java Basics - Anfänger-Themen 9
P Input/Output Bestimmte Anzahl von Werten in einem Array an Methode übergeben Java Basics - Anfänger-Themen 2
M ComboBox bestimmte Elemente disablen/ausgrauen Java Basics - Anfänger-Themen 3
S JButton soll für bestimmte Zeit verschwinden Java Basics - Anfänger-Themen 5
E Datei einlesen und bestimmte Wörter ausgeben Java Basics - Anfänger-Themen 2
A Threads Threads bestimmte Aufgaben zuweisen... Java Basics - Anfänger-Themen 3
D Input/Output Buchstaben als bestimmte Zahl erkennen Java Basics - Anfänger-Themen 4
S Welche Datenstruktur ist die optimalste um Funktionen fuer bestimmte Wertebereiche abzurufen..? Java Basics - Anfänger-Themen 5
N Bestimmte Zeichen eines Strings umwandeln Java Basics - Anfänger-Themen 4
K Eine bestimmte Zeit, eine Schleife laufen lassen. Java Basics - Anfänger-Themen 4
A CSV datei eine Bestimmte Zeile ansprechen Java Basics - Anfänger-Themen 1
W char-Array auf bestimmte Zeichen prüfen Java Basics - Anfänger-Themen 10
N Bestimmte Inhalte aus Datei lesen Java Basics - Anfänger-Themen 11
Ananaskirsche Input/Output Bestimmte Zeile aus Datei einlesen Java Basics - Anfänger-Themen 4
B Best Practice Bestimmte Zahl auslesen und in Variable speichern Java Basics - Anfänger-Themen 3
N Bestimmte Zeile aus einer Datei auslesen Java Basics - Anfänger-Themen 10
I Int Array, Zahl an bestimmte position setzten Java Basics - Anfänger-Themen 2
C [Bukkit Plugin] Blöcke eine bestimmte route entlang fliegen Java Basics - Anfänger-Themen 3
A Button in eine bestimmte Spalte platzieren Java Basics - Anfänger-Themen 4
D Bestimmte Zeile aus TXT Datei ausgeben Java Basics - Anfänger-Themen 4
A Eine Datei Lesen und bestimmte Position überschreiben Java Basics - Anfänger-Themen 2
M Bestimmte Zeichen auslesen Java Basics - Anfänger-Themen 2
G bestimmte dateiendungen in jtree rausfiltern Java Basics - Anfänger-Themen 7
W bestimmte Objekte in ArrayList auslesen Java Basics - Anfänger-Themen 8
G JTextArea: nur bestimmte Zeilen anders formatieren Java Basics - Anfänger-Themen 7
B Input/Output bestimmte Zeilen in .txt Dateinen überschreiben Java Basics - Anfänger-Themen 20
J Bestimmte Anzahl Zeichen aneinander fügen Java Basics - Anfänger-Themen 9
C Bestimmte Informationen von Webseite suchen Java Basics - Anfänger-Themen 13
B Nur bestimmte Klasse ausführen Java Basics - Anfänger-Themen 6
Kenan89 Bestimmte Zeile in txt-Datei ersetzen Java Basics - Anfänger-Themen 4
D BufferedInputStream nur bestimmte Zeichen Java Basics - Anfänger-Themen 11
D Input/Output bestimmte Zeile auslesen Java Basics - Anfänger-Themen 3
B Bestimmte Ziffer Java Basics - Anfänger-Themen 27
B Input/Output In Datei an eine bestimmte Stelle schreiben Java Basics - Anfänger-Themen 37
S Bestimmte Objekte aus Collections anwählen/herausbekommen Java Basics - Anfänger-Themen 8
I Bestimmte Objekte einer Liste hinzufügen Java Basics - Anfänger-Themen 16
R Bestimmte Stellen eines BigInteger Java Basics - Anfänger-Themen 7
S Collections Aus Set<Object> bestimmte Typen entfernen Java Basics - Anfänger-Themen 3
S Bestimmte Methode von unbestimmter Datei Java Basics - Anfänger-Themen 6
V Bestimmte Stellen aus .txt Datei auslesen Java Basics - Anfänger-Themen 11
B bestimmte klammern im string ersetzten Java Basics - Anfänger-Themen 17
Binary.Coder JTable bzw. Tabelle in bestimmte Form überführen Java Basics - Anfänger-Themen 5
0 Grafik eine bestimmte Strecke laufen lassen Java Basics - Anfänger-Themen 6
X im Verzeichnissbaum recursiv nur bestimmte Dateien finden Java Basics - Anfänger-Themen 7
M Aus String bestimmte Inhalte auslesen Java Basics - Anfänger-Themen 8
M Reaktion auf bestimmte Zeit Java Basics - Anfänger-Themen 2
2 Bestimmte Anzahl von Bytes lesen und als string ausgeben? Java Basics - Anfänger-Themen 3
N Bestimmte Zeichen aus Strings zählen Java Basics - Anfänger-Themen 11
P Bestimmte Zeilen einer Datei ermitteln ? Java Basics - Anfänger-Themen 30
StrikeTom Bestimmte stelle in string herausfiltern Java Basics - Anfänger-Themen 7
M Float auf bestimmte Nachkommazahl runden Java Basics - Anfänger-Themen 3
E Bild eine bestimmte Anzahl blinken lassen Java Basics - Anfänger-Themen 3
B array bestimmte summe berechnen Java Basics - Anfänger-Themen 4
Luk10 Zufallszahl "ohne" eine bestimmte Zahl(en) Java Basics - Anfänger-Themen 8
S OOP Wie bei Spiel "17+4" eine Karte an bestimmte Position hinzufügen Java Basics - Anfänger-Themen 13
B OOP String auf bestimmte Zeichen abfragen Java Basics - Anfänger-Themen 4
S Bestimmte Elemente einer ArrayList löschen Java Basics - Anfänger-Themen 3
S Double bis bestimmte Nachkommzahl vergleichen (ohne zusätzliche Libs) Java Basics - Anfänger-Themen 12
Ollek Bestimmte Zeilen aus einer HTML Datei lesen Java Basics - Anfänger-Themen 8
N Text an bestimmte Stelle eines Dokuments schreiben Java Basics - Anfänger-Themen 6
G Bestimmte Zeile aus CSV ausgeben Java Basics - Anfänger-Themen 14
Assassin Nur bestimmte Daten aus txt auslesen... Java Basics - Anfänger-Themen 12
Developer_X Durch int Bestimmte Zeile überschreiben Java Basics - Anfänger-Themen 16
Developer_X Bestimmte Zeile aus TextDocument lesen Java Basics - Anfänger-Themen 2
M Bestimmte zeile aus .txt einlesen Java Basics - Anfänger-Themen 6
Q Nach Stringvorgabe bestimmte funktionen ausführen Java Basics - Anfänger-Themen 3
G Bestimmte Ebene eines Baumes rekursiv ausgeben Java Basics - Anfänger-Themen 49
I bestimmte Zahlen markieren.helppp. Java Basics - Anfänger-Themen 17
G Bestimmte Position im array auslesen Java Basics - Anfänger-Themen 8
H bestimmte objekte in ArrayList löschen? Java Basics - Anfänger-Themen 7
P Hilfe für JComboBox, bmp einbinden/bestimmte punkte auf bmp Java Basics - Anfänger-Themen 3
M bestimmte Zeichen in String eliminieren Java Basics - Anfänger-Themen 2
T Bestimmte Zeile aus einer .txt-Datei auslesen? Java Basics - Anfänger-Themen 10
S Bestimmte Anzahl an nummern auslesen Java Basics - Anfänger-Themen 4
K bestimmte Dateien aus Ordner verschieben Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben