Forum / Grundlagen des Programmierens / 2. Hausübung
2. Hausübung
Hallo Leute!
Hat sich von euch schon jemand die Bsp aus dem Rep angschaut??? Soweit ich weiß hat der Tutor gemeint dass er diese mit Kommentaren versieht um diese verständlicher zu machen, oder irre ich mich???
mfg
Kurze allgemeine Frage ;) müssen wir die abfrage (float eingabe) gegen '.' als komma absichern?
beispiel2: wo die 3 vektoren definiert werden hab ich irgendwo einen fehler, den ich leider nicht finde,... wär super wenn sichs wer reinkopieren könnte und den fehler suchen
import sun.applet.Main;
public class bsp2_1027556_2 {
public class Vektor2D{ //Klasse namens Vekotr2D
double x,y; //Koordinate x,y in Form Gleitkommazahlen
public Vektor2D(){ //Standardstruktor mit (1/1),verwendet man wenn Werte unbekannt
this.x=1;
this.y=1;
}
public Vektor2D(double initialX, double initialY){ //dieser Vektor wird verwendet wenn X und Y eingegeb.werden(initial)also Werte bekannt
x = initialX;
y = initialY;
}
public Vektor2D Addition(Vektor2D summand) { //Methode1:Rückgabewert=Vektor2d;name=Addition
Vektor2D ergebniss = new Vektor2D(); //def.Ergebniss,vom Typ Vektro2D
ergebniss.x = this.x + summand.x;
ergebniss.y = this.y + summand.y;
return ergebniss;
}
public double Laenge() {//Methode2:double=Rückgabewert,Laenge=Methodenname
double ergebniss=Math.sqrt(x * x + y * y); //Math.sqrt=Wurzel
return ergebniss; //return-Ausgabe;
}
} //Ende Class Vektor2D
public static void main(String[] args){ //main Methode (läuft immer zuerst ab), nur in ihr Ausgaben
System.out.println("Hier können Sie von 3 beliebigen Vektoren die Längen berechnen und die Gesamtlänge von allen 3en:");
double x,y;
Scanner input = new Scanner(System.in);
System.out.print("Geben Sie bitte die Koordinaten des ersten Vektors ein: (x,y)");
Vektor2D Vektor1;
Vektor1=new Vektor2D(input.nextDouble(),input.nextDouble()]);
System.out.print("Geben Sie bitte die Koordinaten des zweiten Vektors ein:");
Vektor2D Vektor2 = new Vektor2D(input.nextDouble(),input.nextDouble());
System.out.print("Geben Sie bitte die Koordinaten des dritten Vektors ein:");
Vektor2D Vektor3 = new Vektor2D(input.nextDouble(),input.nextDouble());
System.out.println("Laenge des 1. Vektors: " + Vektor1.Laenge());
System.out.println("Laenge des 2. Vektors: " + Vektor2.Laenge());
System.out.println("Laenge des 3. Vektors: " + Vektor3.Laenge());
Vektor2D ergebnis = Vektor1.Addition(Vektor2).Addition(Vektor3);
System.out.println("Gesamtlaenge: " + ergebnis.Laenge());
}
}\n~~~
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package pkg0926990_2;
import java.util.Scanner;
/**
*
* @author Mike
*/
public class Bsp2_0926990_2_Vektor2D
{
public static double laenge(double x, double y)
{
return Math.sqrt(x*x+y*y);
}
public static double addition(double x, double y)
{
return x+y;
}
static class Vektor2D
{
double x;
double y;
Vektor2D()
{
x = 1;
y = 1;
}
Vektor2D(double xx, double yy)
{
x = xx;
y = yy;
}
}
public static void main(String args[])
{
Scanner eingabe = new Scanner (System.in);
System.out.println("X1 + Y1: ");
Vektor2D v1 = new Vektor2D(eingabe.nextDouble(),eingabe.nextDouble());
System.out.println("X2 + Y2: ");
Vektor2D v2 = new Vektor2D(eingabe.nextDouble(),eingabe.nextDouble());
System.out.println("X3 + Y3: ");
Vektor2D v3 = new Vektor2D(eingabe.nextDouble(),eingabe.nextDouble());
System.out.println("Welche operation?: einzelne (l)ängen, (g)esamtlänge oder (a)ddition");
char rechnung = eingabe.next().charAt(0);
switch(rechnung)
{
case 'a':
System.out.println((addition(v1.x,v2.x)+addition(0,v3.x))+"|"+(addition(v1.y,v2.y)+addition(0,v3.y)));
break;
case 'g':
System.out.println("Länge = "+(laenge(v1.x,v1.y)+laenge(v2.x,v2.y)+laenge(v3.x,v3.y)));
break;
case 'l':
System.out.println("Länge V1 = "+laenge(v1.x,v1.y)+", Länge V2 = "+laenge(v2.x,v2.y)+", Länge V3 = "+laenge(v3.x,v3.y));
break;
default:
System.out.println("Falsche Eingabe");
}
}
}
\n~~~ so habs ich mal gemacht und es geht auch alles, weiss nur ned obs der aufgabenstellung wirklich entspricht -.-
@ clara bei vektor 1 hast du ertsmal eine lose ] drin und wenn du ganz oben public static class Vektor2D schriebst gehts .. ich hab allerdings irgendwo gelesen, dass man das dann nimmer im v3 benutzen kann oder so weils static is? ich hab halt das sleb
nur so ne verständnisfrage, wenn die gesamtlänge meinen, reden die dann von der addierten länge der drei vektoren oder ovn der länge des vektors den man nach der addition erhält? ich dachte letzteres aber jeder addiert hier einfach die längen? seh ich da was falsch
@ clara, zum einen hast du "import java.util.Scanner;" vergessen. Und du hast deine Vektor2D class, in deine bsp2_blabla_2 "verschachtelt". Die Vektor2D ist eine eigenständige Klasse. Also class Vektor2D { //blabla }
public class bsp2_blabla_2 { // }
@A
{
double add_x=x1.x+x2.x+x3.x;
double add_y=x1.y+x2.y+x3.y;
return new Vektor2D(add_x,add_y);
}\n~~~
also meine addition sieht dann so aus, allerdings krieg ich in der letzten zeile ne fehlermeldung, warum? steh grad aufm schlauch irgendwie
V1,2,3 sind deine Vektorobjekte? hmm probier mal
Vektor2D NeuesObjekt = new Vektor2D();
NeuesObjekt = NeuesObjekt.Addition(V1, V2, V3);
\n~~~
so hab ich es jedenfalls gemacht.
ok ich komm immer noch nicht weiter, 2 Fehlermeldungen, einmal beim return wer tund in der 2. Zeile die du mri geschickt hast, dort sagt er mir das er ein objekt haben will aber ein double findet, denke mal das liegt an der methode. gibts da einen befehl wie ich der methode sage das ich sie als objekt jetzt schreibe?
{
return new Vektor2D(x1.x+x2.x+x3.x ,x1.y+x2.y+x3.y);
}
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
String wahl;
Vektor2D V1 = new Vektor2D();
Vektor2D V2 = new Vektor2D();
Vektor2D V3 = new Vektor2D();
Vektor2D NeuesObjekt = new Vektor2D();
NeuesObjekt = NeuesObjekt.Addition(V1, V2, V3);\n~~~
das is sozusagen jetzt oben meine methode dann hab als ich meine objekte defineirt hab dein objekt mal eingefügt und aufrufen tu ich es dann über den befehl NeuesObjekt also folgendermassen
~~~\ncase "a": System.out.println("Die Koordinaten des addierten Vektors lauten: " + NeuesObjekt); break;\n~~~
denke es fehlt da nur der richtige methoden befehl, wie lautet der oder was ist sonst falsch?
Also meinen die nun die Gesamtlänge aller drei Vektoren wenn man sie zuerst addiert oder einfach die drei Längen zusammen gerechnet?
Gibst du deinen Vektorobjekten keine Werte oder hast du das in dem Ausschnitt nur weggelassen ?
Bei der Ausgabe gibst du ihm das Objekt an und eine Variable für den Rückgabewert so z.b.:
System.out.println("X-Koordinate aller Vektoren: "+NeuesObjekt.x+" Y-Koordinate aller Vektoren: "+NeuesObjekt.y);
\n~~~
Ashnagzar, in der Angabe steht "alle drei Vektoren addiert und die Gesamtlänge ausgegeben wird". Damit kann meiner Meinung nach nur die Länge der addierten Vektoren gemeint sein.
ja die ausgabe war mein fehler, da hab ich blödsinn gebaut. das programmfunktioniert jetzt soweit allerdings übernimt er mir noch nicht die werte, d.h. wenn ich addiere kreig ich nur den vektor 3 3 raus egal was für werte ich nehm das ganze sieht so aus
{
Vektor2D Vadd = new Vektor2D();
Vadd.x = x1.x + x2.x + x3.x;
Vadd.y = x1.y + x2.y + x3.y;
return Vadd;
}
\n~~~
wo isn da der fehler? warum übergibt er die werte den nicht die ich eintippe? aufrufen tu ich die methode über das objkt von dir und ausgeben lass ich mir sie ebenfalls so wie du angegeben hast (halt mit | statt deinerm langen geschreibsel)
~~~\n Vektor2D NeuesObjekt = new Vektor2D();
NeuesObjekt = NeuesObjekt.Addition(V1, V2, V3);
\n~~~
~~~\n case "a": System.out.println("Die Koordinaten des addierten Vektors lauten: " +
NeuesObjekt.x +"|" + NeuesObjekt.y); break;\n~~~
Dieter @Ashnagzar
Maschinenbau · Technische Universit...
"Übergebener Parameter: ein zweites Objekt vom Typ Vektor2D"
Kann mir bitte wer sagen was das bedeuten soll?...
und ist "Die Koordinaten sollen in jeweils eigenen Feldern als Gleitkommazahlen doppelter Genauigkeit gespeichert werden" damit gemeint dass die Koordinaten die der Konstruktor erhält in Arrays innerhalb der Vektor2D Klasse gespeichert werden sollen? und dann jeweils die x in einem und die y in einem oder vektorweise? Wenn ja wieso steht das bitte in der Angabe vor dem Satz dass dem Konstruktor die Koordinaten übergeben werden sollen-.- also bei dieser ******** ******* ******* Angabe kann man doch nur auszucken-.- -.- -.- Glück dem der kapiert was die eigentlich wollen>.<'
und heißt das jetzt wir sollen in der Klasse zwei(?!?) Vektoren addieren und im Programm alle drei?? sollen wir die zwei dann per zufall auswählen oder was oO