Ich konnte mich leider nicht anmelden, da immer Der "Empfohlen von" Benutzername existiert nicht.. kommt.
Naja, ich studiere Mechatronik im ersten Semester an einer FH und wollte mal kurz ins Forum fragen, ob sich jemand die Zeit nehmen würde mir beim Programmieren zu helfen - vorerst noch in BlueJ - denn ich verstehe in diesem Fach quasi Bahnhof und mache mir langsam sorgen..
Nein, es sind konkrete Fragen, im Moment möchte ich den Anschluss irgendwie wieder finden.
Ich hätte da ein Beispiel einen neuen Vektor zu berechnen, der den bestehenden irgendwie überschreibt. Und das sollte mittels 3 Konstruktoren möglich sein.
Ich poste das Beispiel mal die nächsten Tage mit den entsprechenden Fragen.
Ich weiss eben zwar was ich rechnerisch machen muss, habe aber keinen Plan wie ich das Programmieren soll bzw. verstehe das erstellte Programm nicht..
Andererseits sollte ich Primzahlen von 1 bis 100 ausgeben oder ein Bild auf den Kopf stellen. Wie gesagt mathematisch habe ich kein Problem damit.
toller tipp ... und wo landet man dann ? mit ziemlicher sicherheit hier ... weil das thema die tage vermehrt kam ... und viele ungefähr den wissensstand von TO haben ... das wird ihm nicht wirklich helfen ...
(wahnsinn ... sich nur anmelden um so n comment zu lassen ...)
Der Unqualifizierte Kommentar kommt von dir. Wenn du dich mal selber um Google bemüht hättest, hättest du gemerkt, dass bei seinem Vorschlag das Java-Forum auf der ersten Seite nicht einmal als Ergebnis kommt.
@TO: konkrete Fragen kannst du hier jederzeit stellen. Aber am besten mit deinem Versuch das zu Programmieren. Und lass dir den Tipp von wuschel nicht schlecht reden. Google ist eine prima Anlaufstelle die oft schnell zur Problemlösung beitragen kann.
toller tipp ... und wo landet man dann ? mit ziemlicher sicherheit hier ... weil das thema die tage vermehrt kam ... und viele ungefähr den wissensstand von TO haben ... das wird ihm nicht wirklich helfen ...
(wahnsinn ... sich nur anmelden um so n comment zu lassen ...)
Also wie die Primzahlen ausgegeben werden, weiss ich. Den Erastothenes kenne ich.
Ich habe vor das Programm folgend zu schreiben:
Ich erstelle ein mehrdimensionales Array, also ein Array[x][y] lese einen Parameter n für die Anzahl der Felder ein und fülle jedes Feld mittels einer Schleife beginnend mit 2 bis 100 auf.
Ich gehe das Feld durch, wenn ich die 2 habe bilde ich die Vielfachen davon und gehe einzelne Felder mit einer Schleife durch und überschreibe diese mit dem Wert 0. Das gleiche mache ich mit der 3, dann mit der nächsten niedrigen Zahl (also Feld das nicht 0 ist) usw.
Schlussendlich dann habe ich Zahlen in den Feldern die Primzahlen sind und diese gebe ich dann aus?
Ist das so prinzipiell möglich oder ist das zu kompliziert? Was könnte ich besser machen?
Ich denke, wenn ich so vorgehe, indem ich zuerst frage, dann verstehe ich es auch besser..
Danke vielmals
Ich habe mit der Programmierung der Primzahlen begonnen.
Leider stecke ich schon fest.. Ich wäre froh, wenn ihr mir einen Tipp geben könntet, wie ich das noch auf meine Weise zu Ende bringen könnte.
Ich habe nun nämlich alle Felder mit den Zahlen 1-100 gefüllt.
Nun geht es darum alle Vielfachen der noch kleineren Zahlen 2 und 3 und 5 durch eine 0 zu ersetzen, damit ich schlussendlich die Felder durchgehen und nur das ausgeben kann wo auch Zahlen drin stehen..
irgendwie krieg ich das nicht in eine Formel gebacken. Hier ist der bisherige Code..
Der Grund dafür, du musst bestimmte Dinge, wie Beispielsweise eine Konsolenausgabe in eine Methode schreiben. Du hast alles innerhalb der Klasse, aber nicht in einer Methode stehen, daher der Fehler.
return new Vektor (y * v.getz() - z * v.gety() + z * v.getx() - x * v.getz() + x * v.gety() - y * v.getx());
die rechnung ergibt einen wert, du hast keinen konstrukor mit nur einem double
Vektor v3 = v1.Vektorprodukt(v2);
diese Methode gibt es nicht..
System.ut.println... ut? ok...
ch studiere Mechatronik im ersten Semester an einer FH
return new Vektor (y * v.getz() - z * v.gety() + z * v.getx() - x * v.getz() + x * v.gety() - y * v.getx());
die rechnung ergibt einen wert, du hast keinen konstrukor mit nur einem double
Vektor v3 = v1.Vektorprodukt(v2);
diese Methode gibt es nicht..
System.ut.println... ut? ok...
jetzt echt? sorry halt dich ran... das ist babykram, du bist nicht mehr an der hauptschule!
Danke für deine Hilfe!
Ich bin gelernter Maschinenbauer und besuche den Lehrgang im Bereich Mechatronik mit Schwerpkt. Maschinenbau.
Ich arbeite zu 80%, studiere nebenbei täglich Montag-Donnerstag von 17-20:30, und freitags ganztags von 8-17Uhr.
Sorry, es gibt einfach Leute, die keine Genies sind wie du und sich bei solchen Fächern auch mal schwer tun. Ich gebe mein Bestes. Dass ich samstagabends zu Hause sitze und mich mit dem Programmieren beschäftige, muss auch einem Menschen wie dir, mit hoffentlich gesundem Menschenverstand etwas sagen..
Jetzt habe ich noch ein weiteres Problem und zwar markiert er mir in der Zeile 62 bzw. 67 die ganze Zeile das "v.get(z) rot bzw. die geschwungenen Klammern der Methode in der Testklasse..
Java:
publicclassVektor{privatedouble x;privatedouble y;privatedouble z;publicVektor(){
x = y = z =0;}//1. KonstruktorpublicVektor(double x,double y,double z){this.x = x;this.y = y;this.z = z;}// 2. KonstuktorpublicVektor(Vektor v){this.x = v.getx();this.y = v.gety();this.z = v.getz();}//3. Konstuktorprivatedoublegetx(){returnthis.x;}privatedoublegety(){returnthis.y;}privatedoublegetz(){returnthis.z;}publicVektoraddiere(Vektor v){this.x = x + v.getx();this.y = y + v.gety();this.z = z + v.getz();returnthis;}publicVektorsubtrahiere(Vektor v){this.x = x - v.getx();this.y = y - v.gety();this.z = z - v.getz();returnthis;}publicdoublegibBetrag(){returnMath.sqrt(x * x + y * y + z * z);}publicVektorgibSkalarprodukt(Vektor v){return(x * v.getx()+ y * v.gety()+ z * v.getz());}publicVektorgibVektorprodukt(Vektor v){return(y * v.getz()- z * v.gety())+(z * v.getx()- x * v.getz())+(x * v.gety()- y * v.getx());}publicString toString (){return"("+ x +", "+ y +", "+ z +")";}}publicclassTest{publicvoidtesten(){Vektor v0 =newVektor(1,2,3);Vektor v1 =newVektor(v0);System.out.println ("v1 = "+ v1.toString());System.out.println ("|v1| = "+ v1.gibBetrag());Vektor v2 =newVektor(4,5,6);System.out.println ("v2 = "+ v2.toString());
v1.addiere(v2);System.out.println ("v1 + v2 = "+ v1.toString());
v1 =newVektor(v0);
v1.subtrahiere(v2);System.out.println ("v1 - v2 = "+ v1.toString());
v1 =newVektor(v0);Vektor wert = v1.gibSkalarprodukt(v2);System.out.println ("v1 * v2 = "+ wert);Vektor v3 = v1.gibVektorprodukt(v2);System.out.println ("v1 x v2 = "+ v3.toString());}}
Naja, ich habe nun das Vektorenbeispiel beendet, es funktioniert soweit. Ich habe mir das danach noch mir selbst versucht zu erklären, was das Programm macht.
Der erste Code zeigt das erfolgreiche Vektorenbeispiel.
Nun, da ich das Programm verstanden habe, versuche ich mich nun gerade mit dem selben Beispiel durch ein Array zu schlagen.
Irgendwie habe ich einen Knoten im Kopf und mir leuchtet es nicht ein, wie ich beim dritten Konstruktor die Werte des 2. Konstruktors übernehmen kann, ohne mit den Parametern in Konflikt zu geraten.
Die ersten beiden Konstruktoren bestehen ja aus lauter Doubles.
Wie müsste der gesamte Code also im 3. Konstruktor lauten im 2. Java Anhang.
Ich muss ja irgendwie sagen: Erzeuge mir einen Array, und fülle diesen mit den Werten des eigelesenen Konstruktors. Irgendwie komme ich nicht auf einen Nenner..
Das Problem fängt in der 27. Zeile im 2. Java Code an..
Java:
publicclassVektor{privatedouble x;privatedouble y;privatedouble z;publicVektor(){
x = y = z =0;}//1. KonstruktorpublicVektor(double x,double y,double z){this.x = x;this.y = y;this.z = z;}// 2. KonstuktorpublicVektor(Vektor v){this.x = v.getx();this.y = v.gety();this.z = v.getz();}// 3. Konstuktorprivatedoublegetx(){returnthis.x;}privatedoublegety(){returnthis.y;}privatedoublegetz(){returnthis.z;}publicVektoraddiere(Vektor v){this.x = x + v.getx();this.y = y + v.gety();this.z = z + v.getz();returnthis;}publicVektorsubtrahiere(Vektor v){this.x = x - v.getx();this.y = y - v.gety();this.z = z - v.getz();returnthis;}publicdoublegibBetrag(){returnMath.sqrt(x * x + y * y + z * z);}publicdoublegibSkalarprodukt(Vektor v){double wert;
x = x * v.getx();
y = y * v.gety();
z = z * v.getz();
wert = x + y + z;return wert;}//mit lokalen Variablen, da sonst die Komponenten x,y,z nach der Reihe überschrieben werden.publicVektorgibVektorprodukt(Vektor v){double h = x;double i = y;double j = z;this.x =(i * v.getz())-(j * v.gety());this.y =(j * v.getx())-(h * v.getz());this.z =(h* v.gety())-(i * v.getx());returnthis;}publicString toString (){return"("+ x +", "+ y +", "+ z +")";}}publicclassTest{publicvoidtesten(){Vektor v0 =newVektor(1,2,3);Vektor v1 =newVektor(v0);//Stelle Vektor 1 als Vektorschreibweise und als Betrag darSystem.out.println ("v1 = "+ v1.toString());System.out.println ("|v1| = "+ v1.gibBetrag());//Stelle Vektor 2 als VektorschreibweiseVektor v2 =newVektor(4,5,6);System.out.println ("v2 = "+ v2.toString());//addiere Vektor 1 mit Vektor 2
v1.addiere(v2);System.out.println ("v1 + v2 = "+ v1.toString());//Vektor 1 wurde mit Vektor 2 zu einem "neuen Vektor" gemacht durch die Addition//Vektor 1 muss nun wieder die Werte von Vektor 0 erlangen um von den ursprünglichen Werten//die entsprechende Subtraktion zu erlangen.
v1 =newVektor(v0);
v1.subtrahiere(v2);System.out.println ("v1 - v2 = "+ v1.toString());//Skalarprodukt von Vektor 1 und Vektor 2
v1 =newVektor(v0);double wert = v1.gibSkalarprodukt(v2);//Vektor, weil Methode Skalarprodukt auch einen Vektor zurückgibtSystem.out.println ("v1 * v2 = "+ wert);//Vektorprodukt von Vektor 1 und Vektor 2Vektor wert2 = v0.gibVektorprodukt(v2);System.out.println ("v1 x v2 = "+ wert2.toString());}}
Java:
//3-dimensionale Vektoren mit verschiedenen RechenoperationenpublicclassVektor{privatedouble[]Vektor;privatedouble[]Vektor2;// 1. KonstruktorpublicVektor(){Vektor=newdouble[3];Vektor[0]=0;Vektor[1]=0;Vektor[2]=0;}//2. KonstruktorpublicVektor(double wert0,double wert1,double wert2){Vektor=newdouble[3];Vektor[0]= wert0;Vektor[1]= wert1;Vektor[2]= wert2;}// 3. KonstruktorpublicVektor(doubleVektor2){Vektor2=newVektor[3];Vektor2[0]=Vektor[0];Vektor2[1]=Vektor[1];Vektor2[2]=Vektor[2];}publicdoublegibx(){returnVektor[0];}publicdoublegiby(){returnVektor[1];}publicdoublegibz(){returnVektor[2];}}
privateboolean[]gibSieb(int n){
n++;boolean[] b =newboolean[n];for(int i =4; i < b.length; i +=2){
b[i]=true;}finalint sqrt =(int)Math.sqrt(n);for(int i =3; i < sqrt; i +=2){if(!b[i]){for(int j = i, k = i * j; k < b.length; j +=2, k = i * j){
b[k]=true;}}}return b;}
true bedeutet KEINE Primzahl. Das kann man ja drehen, wie man möchte.
Ja ja ich weiß schon das es nicht einfach ist wenn man Anfänger ist und eigentlich einen anderen Fokus hat. Jedoch kann ich dir sagen, dass dir dein selbsmitleid nix bringt, das sind einfache Beispiele... also mein Tipp: halt dich ran, für das zeug muss man keine genie sein. wenn du eine methode aufrufst die nicht da ist, gehts nicht... ganz einfach...
Naja, es muss ja irgendwelche Besserwisser im Forum geben und sogar Anfäger blöd anpfeifen. Der eine behauptet, das geschriebene Programm sei ausgeliehen und abgeschrieben und der andere erwartet nach 2 Monaten Programmieren, dass er schon Profi ist.
Ich muss euch leider enttäuschen. Wäre ich ein Genie müsste ich auch nicht studieren gehen und würde auch nicht hier sitzen und mich mit euch Besserwissern abgeben..
Nur so nebenbei, ich habe bloss begründet warum ich bisher auch nach 3Monaten so schwach bin im Programmieren und das ist bei Gott mal kein Selbstmitleid. Denn ich bin zufrieden mit dem was ich bisher erreicht hab..
Ihr könntet einfach mal euch selbst einen Gefallen tun und mal Beiträge leisten, die mich oder andere Anfänger wenigstens einen Millimeter vorwärts bringen..
Aber ihr Schlauberger: sagt mir mal warum ich denn nicht bei diesem Arraybeispiel
nicht funktioniert, sonst könnt ihr euer Programmtool mal hernehmen und besser ausprogrammieren.
denn das ist auch etwas was ich gestern stundenlang versucht und nicht zum kompilieren gebracht habe. Aber ausreden lassen ist ja auch nicht eure Stärke..
Was soll fachlich ein Vektor mit drei Koordinaten machen, wenn er nur eine Double bekommt??
keine Ahnung der von mir zuletzt geschriebene 3.Konstruktor gilt. funktioniert ja auch nicht!!! --> // 3. Konstruktor
public Vektor (Vektor v) {
Wie unterscheidet sich das neue Beispiel von dem bereits gelösten.?
gar nicht, ist putz das selbe
---
Und was soll das bedeuten:
Vektor2 = new Vektor [3];, wenn Vektor2 aus Doubles besteht?
er soll einen neuen Vektor mit 3 feldern erzeugen. der eigelesene Vektor v soll als x,y,z die werte der 3 felder bekommen. siehe oben
Tja. Hat noch nicht ganz den Erfolg gebracht. Du musst dich schon ein wenig mehr damit auseinander setzen.
Du hast schon richtig erkannt. Da darf man kein Double a übergeben, sondern einen anderen Vektor. Dieser Vektor wird dann kopiert. Er übernimmt die Werte eines anderen Vektor-Objekts.
Du hast eine klasse Vektor. Diese hat zwei Arrays. Vektor und Vektor2. Das ist natürlich Quatsch. Du brauchst nur ein Array. Jede Lösung die ein zweites Array als member der klasse Vektor beinhaltet ist falsch.
Ist ja auch klar, da ein Vektor nur einen Satz Koordinaten hat.
Nun hast du festgestellt, dass deine Implementierung exakt das gleiche ist wie oben. Blos mit einem Array statt drei doubeln. Also musste man ja hier nur jedes x durch das Äquivalent im Array Stumpf ersetzen.
Nach drei Monaten Java sollte dies nun wirklich kein Problem sein.
Wir stellen fest die Lösung steht bereits oben. Man muss sie nur kopieren. Drei Variablen durch ein Array ersetzen.
Dann sollte man variablen namen klein schreiben. Jede Wette du weißt nicht annähernd wo klasse ist und wo die Referenz auf das Array.
Weiterhin, wenn du Fehler hast, dann poste die Fehlermeldung und die Zeile.
Wisse aber, dass wenn du hier nach den Grundlagen fragst, wirst du immer auf google verwiesen. Von einem Studenten würde man erwarten, dass er das wissen eigenständig finden kann.
Nicht unbedingt, er hat ja auch nach Primzahlen gefragt. Aber es war auch ein Fehler enthalten und keiner hat's gemerkt:
Java:
boolean[] b =newboolean[n +1];for(int i =4; i < b.length; i +=2){
b[i]=true;}finalint sqrt =(int)Math.sqrt(n);for(int i =3; i <= sqrt; i +=2){// <- <=if(!b[i]){for(int j = i, k = i * j; k < b.length; j +=2, k = i * j){
b[k]=true;}}}return b;