Methoden Habe ein Problem bei folgender Programmierung

ArdianH101

Mitglied
Hallo, ich bin noch ein Anfänger und mach mich derzeit an bestimmte Aufgaben.
Java:
public class Aufgabe5{
    public static void main(String[] args){
        System.out.println("Primfaktorenzerlegung sieht wie folgt aus: "+PrimZerlegung(90));
    }
   
    public static int[] PrimZerlegung(int n){
       
        int[] array={1,2,3,5,7,11,13,17,23,27};
        int[] Teiler=new int[9];
        int j=0;
       
        for(int i=1; i<=array.length;i++){
            while(n%array[i]==0){
                return Teiler[j]=i;
                j++;
            }
           
        }
        return Teiler;
    }
}

Bei dieser Aufgabe will ich jetzt die Zahl 90 in Primfaktoren zerlegen. Mein array beinhaltet einfach Primzahlen bis 27, habe ich beliebig gewählt und der Teiler-Array, soll als eine Art Zwischenspeicher dienen, damit ich dann am Ende in der main Methode alle Primfaktoren von 90 ausgeben kann.

Mein Grundgedanke ist, dass in der FOR Anweisung die Zahl mit dem i-ten Arrayfeld mit dem modolo berechnet werden soll. Ist das dann Null, dann soll diese Primzahl halt irgendiwe bei Teiler gespeichert werden und am Ende soll dann alles zusammen zurück gegeben werden. Jetzt weiss ich erstens nicht:

1. Stimmt das while überhaupt? Ich weiss halt nicht wie ich das mit if machen sollte, also was ich dann da als Anweisung schreibe, wenn der Modolo ungleich null wird.
2. Wie weise ich denn den Wert eines Arrays(array) einem anderen Array(Teiler) zu? Also wie sieht die Code Schreibweise aus?


Danke schonmal :)
 

Joose

Top Contributor
1. Stimmt das while überhaupt? Ich weiss halt nicht wie ich das mit if machen sollte, also was ich dann da als Anweisung schreibe, wenn der Modolo ungleich null wird.

Das kommt darauf an was du mit dem "while" bezwecken willst, da es sich hierbei auch um eine Schleife handelt.
Du hast eine for-Schleife um alle deine Primzahlen durchzugehen, durch welche die Zahl 90 dividiert werden soll. Deine while-Schleife sollte glaub ich eher eine if-Bedingung sein.
Im if willst du aber nicht etwas "return" (da sonst genau beim return die Methode verlassen wird - sprich die Schleife wird nicht weitervearbeitet) sondern einfach nur eine Zuweisung ans andere Array.

2. Wie weise ich denn den Wert eines Arrays(array) einem anderen Array(Teiler) zu? Also wie sieht die Code Schreibweise aus?

So wie du es beim (falschen) "return" schon stehen hast
Java:
deinArray[index1] = dasAndereArray[andererIndex];
 
K

kneitzel

Gast
Also das sieht relativ gut aus, aber es dürfte sich nicht kompilieren lassen. Das Problem ist das return innerhalb der Schleife. Mit return springst Du ja aus der Funktion raus - willst Du das? Oder willst Du den Teiler nur einmal zuweisen?
Ein anderes Problem ist evtl. die Liste der Primzahlen. Die solltest Du noch einmal kontrollieren. Sie scheint mir unvollständig zu sein, aber ich habe das im Detail nicht überprüft. Aber ich sehe z.B. nicht die 19 und die ist nicht durch 2, 3 und 5 teilbar.
 
K

kneitzel

Gast
Nach der anderen Antwort sehe ich noch etwas:
a) Eine While-Schleife kann schon Sinn machen, da ja ein Teiler mehrfach vorkommen kann. Aber was natürlich noch fehlt ist eine Anpassung der Zahl. Also beim Beispiel 90 würde ich erwarten:
90 % 2 = 0, also kommt die 2 in die Teiler und es geht dann mit 90 / 2 = 45 weiter. Ansonsten hat man eine Endlosschleife!
b) Das Array fängt mit 1 an. Durch 1 ist jede Zahl teilbar und das ist kein Teiler, der gelistet werden muss und darf.
c) Das Array gehst Du falsch durch. Du fängst mit Element 1 an was ok sein könnte, wenn du die 1 weglassen wolltest, aber <= array.length ist falsch. Das letzte Element von einem Array mit Länge n ist (n-1) und nicht n.
 

ArdianH101

Mitglied
Also danke schon mal an kneitzel und Joose, das mit dem return in der while Schleife(mitterlweile eine if Schleife gemacht) habe ich raus genommen.
Ja stimmt 19 habe ich vergessen :(
Die 1 hab ich nun auch raus genommen und das mit dem <= ist auch korrigiert.
Also if-Schleife hab ich nun, aber was kommt bei else denn als Anweisung, das habe ich nicht ganz verstanden :/
 
K

kneitzel

Gast
If ist keine Schleife :) Bring es mal zum laufen und teste es mit der 90. Da müsste das Ergebnis ja 2, 3, 3, 5 sein, denn 2 * 3 * 3 * 5 = 90. (Und dann baust Du evtl. wieder eine while Schleife ein :) )
 

ArdianH101

Mitglied
Java:
Primfaktorenzerlegung sieht wie folgt aus: [I@6d06d69c
Das kriege ich als ergebnis. Versteh ich nicht. Stimmt was mit dem Compiler nicht?
 

ArdianH101

Mitglied
und mit der while schleife kommt
Code:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 9
        at Aufgabe5.PrimZerlegung(Aufgabe5.java:15)
        at Aufgabe5.main(Aufgabe5.java:4)
 
K

kneitzel

Gast
Das ist die Ausgabe, wenn kein toString() für ein Objekt definiert wurde (z.B. bei einem Array). Dann wird halt eine Referenz ausgegeben. Du kannst entweder die Elemente des Arrays über eine Schleife ausgeben oder eine Funktion aus dem Framework verwenden (Was aber evtl. in einer Übung nicht erlaubt ist).
 
K

kneitzel

Gast
Gibst Du den aktuellen Code einmal? Evtl. hast Du doch noch die 1 drin oder Du rechnest in der While-schleife immer mit 90? Und dann ist das Ergebnis-Array schnell voll. Nach jedem Setzen eines Wertes musst Du natürlich den Wert, mit dem Du rechnest, auch durch den Teiler teilen.

Also er muss prüfen: 90 % 2 == 0? Ja.
Also 2 schreiben.
45 % 2 == 0? Nein, also weiter zu nächster Primzahl. Wenn er hier erneut die 90 % 2 prüft, dann hast Du eine Endlosschleife....
 

ArdianH101

Mitglied
Also er muss prüfen: 90 % 2 == 0? Ja.
Also 2 schreiben.
45 % 2 == 0? Nein, also weiter zu nächster Primzahl. Wenn er hier erneut die 90 % 2 prüft, dann hast Du eine Endlosschleife....
Java:
public class Aufgabe5{
    public static void main(String[] args){
       
        System.out.println("Primfaktorenzerlegung sieht wie folgt aus: "+PrimZerlegung(90));
    }
   
    public static int[] PrimZerlegung(int n){
       
        int[] array={2,3,5,7,11,13,17,19,23,27};  
        int[] Teiler=new int[10];
        int j=0;
       
        for(int i=0; i<array.length;i++){
            if(n%array[i]==0){
                Teiler[j]=array[i];
                j++;
            }
           
        }
        return Teiler;
    }
}

Also was du meintest mit 90%2==0 usw. verstehe ich vom Prinzip, aber ich weiß nicht, wie ich das schreiben soll :/
 

ArdianH101

Mitglied
Spontane Idee: kann ich nicht einfach unter das j++; noch
Java:
n=n/array[i];
schreiben? dann hätte ich 90/2==0, Array Werte werden überwiesen, und n=45. dann 45/3==0,...., n=15 usw usw?
also hab das mal so gemacht, hab aber immer noch das Problem mit der Fehlermeldung:
Java:
Primfaktorenzerlegung sieht wie folgt aus: [I@6d06d69c
 

Joose

Top Contributor
Spontane Idee: kann ich nicht einfach unter das j++; noch
Java:
n=n/array[i];
schreiben?

Spricht nichts dagegen, du könntest es natürlich einfach ausprobieren. Dann siehst du ja schon mal obs funktioniert.

Java:
Primfaktorenzerlegung sieht wie folgt aus: [I@6d06d69c
Die Ursache von dieser Ausgabe wurde oben schon beschrieben! Fehler ist das keiner :)
 

ArdianH101

Mitglied
Ich danke euch vielmals, hab das jetzt endlich hinbekommen :D
So sieht mein funktionierender Code jetzt aus:
Java:
import java.util.Arrays;    
public class Aufgabe5{
    public static void main(String[] args){
    
        System.out.println("Primfaktorenzerlegung sieht wie folgt aus: "+Arrays.toString(PrimZerlegung(90)));
    }

    public static int[] PrimZerlegung(int n){
    
        int[] array={2,3,5,7,11,13,17,19,23,27};
        int[] Teiler=new int[10];
        int j=0;
    
        for(int i=0; i<array.length;i++){
            while(n%array[i]==0){
                Teiler[j]=array[i];        
                j++;                      
                n=n/array[i];
            }
        
        }
        return Teiler;
    }
}

Das einzigste was ein bisschen unschön ist, ist dass ich ja 10 Felder bei dem Teiler Array erstellt habe und mein Ergebnis jetzt so aussieht:
Java:
Primfaktorenzerlegung sieht wie folgt aus: [2, 3, 3, 5, 0, 0, 0, 0, 0, 0]
Aber ich belasse es jetzt dabei. Danke nochmal! :D
 
K

kneitzel

Gast
Gratuliere zur Lösung. Das Problem mit der Ausgabe ist leider, dass Du mit einem Array fester Größe arbeitest. Das ist am Anfang zum Lernen von Java evtl. angemessen, aber später würde man Klassen wie ArrayList nutzen.

Du könntest am Ende der Funktion natürlich noch ein Array mit Größe j erstellen und die Ergebnisse einmal kopieren. Dann hättest Du auch ein passendes Array mit der Lösung.
 

Bitfehler

Bekanntes Mitglied
Oder eine eigene toString-Methode schreiben, die die Ausgabe beim ersten Auftauchen einer 0 beendet. (Das Array hätte dann zwar immer noch eine feste Größe)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
EchtKeineAhnungManchmal hallo habe ein Problem mit einer Datei -> (Zugriff verweigert) Java Basics - Anfänger-Themen 4
I Ich habe ein Problem Java Basics - Anfänger-Themen 3
F Habe ein problem mit dem ActionListener Java Basics - Anfänger-Themen 3
I wieder mit einer Umwandelung habe ich Problem (diesmal von char Array zu char) Java Basics - Anfänger-Themen 1
E Habe ein Problem Java Basics - Anfänger-Themen 10
G Umgebungsvariable Hallo Ich habe ein Problem mit der Umgv Java Basics - Anfänger-Themen 9
C JDK installieren Habe ein Problem bei Java install Java Basics - Anfänger-Themen 4
J Habe problem mit Java Java Basics - Anfänger-Themen 2
G Habe ein Problem mit syn-Editor ( beim compilieren) Java Basics - Anfänger-Themen 4
S Ich habe ein kleines Problem mit meinem Übungsprogramm Java Basics - Anfänger-Themen 7
G habe ein Catch problem Java Basics - Anfänger-Themen 7
R Habe ein Problem und eine Frage Java Basics - Anfänger-Themen 19
P Habe da ein Problem mit Arrays! Bitte um Hilfe Java Basics - Anfänger-Themen 2
M Habe ein Problem mit dem Konstruktor!Wer kann helfen? Java Basics - Anfänger-Themen 15
berserkerdq2 Habe ich die Aufgabe richtig gelöst? Java Basics - Anfänger-Themen 3
berserkerdq2 Habe ein Spiel entwickelt, dass immer in der 4 Runde einen cast-Fehler erhält Java Basics - Anfänger-Themen 3
berserkerdq2 Habe eine Klasse, welche public ist, diese hat eine public Methode, die nicht static ist. Wenn ich nun versuche aufzurufen Probleme? Java Basics - Anfänger-Themen 8
berserkerdq2 Habe zwei exceptions, welche ist ein Kommunikationsfehler und welche ein Ausgabefehler? Java Basics - Anfänger-Themen 4
berserkerdq2 Wann soll ich den Stream schließen, wenn ich das in einer Methode habe? Java Basics - Anfänger-Themen 8
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
Aqtox Hallo ich muss für die Schule ein Wuerfell Duell erstellen jedoch habe ich ein fehler Java Basics - Anfänger-Themen 4
I DecimalFormat in Zahlenformat für Währung, habe 7,99, bekomme aber 7 Java Basics - Anfänger-Themen 4
M Was habe ich hier falsch, dass wenn ich z.B.: 11 eingebe mir false zurück gegeben wird? Java Basics - Anfänger-Themen 2
Kapfski Was habe ich falsch gemacht? Hilfe! Java Basics - Anfänger-Themen 17
T Ich habe eine Variabel die nicht Methoden übergreifend ist. Kann mir jemand Helfen :) Java Basics - Anfänger-Themen 5
A Ich habe das Gefühl etwas grundlegendes falsch zu machen Java Basics - Anfänger-Themen 6
V Erste Schritte Habe Fragen zu der For und While Schleife als auch Inkrement und Dekrement Java Basics - Anfänger-Themen 4
JavaNewbie2.0 Habe ein frage wie man etwas macht. Java Basics - Anfänger-Themen 13
Z Was habe ich davon mit einem Datentyp verschiedene Instanzen zu haben? Java Basics - Anfänger-Themen 6
B Erste Schritte Way of life ohne import - Habe Beispiel, macht Unfug Java Basics - Anfänger-Themen 21
J Java: Was habe ich falsch gemacht? Java Basics - Anfänger-Themen 4
Thallius String und \n. Habe wohl gerade Brett vorm Kopf Java Basics - Anfänger-Themen 13
F String.replaceAll() funktioniert nicht richtig oder habe ich den falschen Regex?? Java Basics - Anfänger-Themen 3
S Habe mist gebaut.. ^^ Java Basics - Anfänger-Themen 4
I Habe keine Idee was ich als Anfänger programmieren kann. Java Basics - Anfänger-Themen 4
K Habe ich ein Synchronisationsproblem ? Java Basics - Anfänger-Themen 25
B Warum kommt immer die 0 als Ergebnis? Was habe ich falsch gemacht? Java Basics - Anfänger-Themen 18
E Habe java. Datei wie ausführen ? Java Basics - Anfänger-Themen 9
B Habe einen Fehler Java Basics - Anfänger-Themen 3
U Habe meine .class files gelöscht. Java Basics - Anfänger-Themen 3
S Taschenrechner programmieren und habe null Ahnung Java Basics - Anfänger-Themen 22
X Habe Set, möchte List Java Basics - Anfänger-Themen 3
W Applet starten - ich habe keine ahnung Java Basics - Anfänger-Themen 17
G Habe bei String kein split()? Java Basics - Anfänger-Themen 7
K Brauche nur Tipps Leute habe keine plan wie ich dass machen Java Basics - Anfänger-Themen 4
A Gleichungssystem: Ich habe es probiert! Java Basics - Anfänger-Themen 4
H habe keine main Java Basics - Anfänger-Themen 9
J Habe gerade erst mit Java begonnen - Frage zu JTabbedPane Java Basics - Anfänger-Themen 3
ven000m Rauten "Stern" zeichnen, hälfte habe ich zweite? Java Basics - Anfänger-Themen 2
G Habe Fragen zu der Programmierung eines Matheprogramms Java Basics - Anfänger-Themen 5
T HILFE! Ich habe keinen Plan mehr! Java Basics - Anfänger-Themen 16
Z Warum habe ich eine ArrayIndexOutOfBoundsException? Java Basics - Anfänger-Themen 2
K Verständnis Problem bei Server/Client Java Basics - Anfänger-Themen 2
I WildFily - unterschiedliche Libs im Projekt verursachen Problem Java Basics - Anfänger-Themen 11
imocode Vererbung Problem mit Vererbung Java Basics - Anfänger-Themen 2
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
I Applikationsserver (WildFly) - Zugriff auf Ressourcen.. Problem mit Pfade Java Basics - Anfänger-Themen 10
A ScheduledExecutorService problem Java Basics - Anfänger-Themen 7
marcelnedza Problem mit Weltzuweisung, JavaKarol Java Basics - Anfänger-Themen 13
XWing Methoden rückgabe Problem? Java Basics - Anfänger-Themen 6
M Erste Schritte Collatz Problem max int Java Basics - Anfänger-Themen 3
M Problem bei verschachtelter for-Schleife bei zweidimensionalen Arrays Java Basics - Anfänger-Themen 3
C GLOOP Problem beim Erstellen der Kamera Java Basics - Anfänger-Themen 9
nelsonmandela Problem bei Ausgabe einer Switch - Case Funktion Java Basics - Anfänger-Themen 5
frager2345 Problem mit Methode Java Basics - Anfänger-Themen 4
L Problem bei Rechnung mit Math.pow Java Basics - Anfänger-Themen 13
A Thread-Schreibe-Lese-Problem Java Basics - Anfänger-Themen 4
SUPERTJB return Problem Java Basics - Anfänger-Themen 3
sserio BigInteger Problem Java Basics - Anfänger-Themen 4
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
K Problem mit "Random" Java Basics - Anfänger-Themen 5
S Datei anlegen Problem! Groß- und Kleinschreibung wird nicht unterschieden Java Basics - Anfänger-Themen 4
sserio Problem beim Anzeigen Java Basics - Anfänger-Themen 5
xanxk Problem For-Schleife mit Charakter Java Basics - Anfänger-Themen 2
L Unbekanntes Problem mit 2d Array Java Basics - Anfänger-Themen 6
sserio Liste erstellt und ein Problem mit dem Index Java Basics - Anfänger-Themen 8
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Schleife Problem Java Basics - Anfänger-Themen 2
D Problem mit der Erkennung von \n Java Basics - Anfänger-Themen 2
milan123 das ist meine aufgabe ich hab das problem das bei mir Wenn ich die Richtung der Linien verändern will und drei davon sind richtig, verändere ich die 4 Java Basics - Anfänger-Themen 3
M Verständins Problem bei Aufgabe Java Basics - Anfänger-Themen 4
HeiTim Problem mit der Kommasetzung an der richtigen stelle Java Basics - Anfänger-Themen 59
Temsky34 Problem mit dem Code Java Basics - Anfänger-Themen 17
P Problem mit Calendar.getDisplayName() Java Basics - Anfänger-Themen 8
C Problem mit mehreren Methoden + Scanner Java Basics - Anfänger-Themen 5
P Datei einlesen, nach Begriff filtern und in Datei ausgeben. Problem Standardausgabe über Konsole Java Basics - Anfänger-Themen 19
M Problem mit Klassenverständnis und Button Java Basics - Anfänger-Themen 8
H Problem mit Verzweigungen Java Basics - Anfänger-Themen 6
H Problem mit Rückgabewert Java Basics - Anfänger-Themen 7
josfe1234 JAVA FX problem Java Basics - Anfänger-Themen 3
A Code Problem Java Basics - Anfänger-Themen 6
Henri Problem von Typen Java Basics - Anfänger-Themen 7
J Problem mit "ArrayIndexOutOfBoundsException" Java Basics - Anfänger-Themen 11
K jackson Mapping - Problem mit Zeitzonen Java Basics - Anfänger-Themen 10
B Threads Problem mit mehreren Threads Java Basics - Anfänger-Themen 38
I Output BigDecimal anstatt double / Problem beim Rechnen Java Basics - Anfänger-Themen 16
D Schleifen Problem Java Basics - Anfänger-Themen 2
H So viele Fehlermeldungen, dass ich nicht weiß wo das Problem ist. Java Basics - Anfänger-Themen 6
J JAVA-Problem blockiert MEDIATHEKVIEW Java Basics - Anfänger-Themen 13
T Problem mit Lehrzeichen und String bei einfacher Chiffre Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben