auf klasse zugreifen in einer anderen klasse

Status
Nicht offen für weitere Antworten.

lenny

Mitglied
Ich habe im ordner java/io die datei Vec3D.java gespeichert. (Sie sieht folgendermassen aus:)
Code:
class Vec3D {
	double v1, v2,v3;
	Vec3D (double v1, double v2, double v3) {this.v1=v1; this.v2=v2; this.v3=v3;}
	Vec3D add(Vec3D v) {v1=v1+v.v1; v2=v2+v.v2; v3=v3+v.v3;}
	Vec3D multiply(double s) {v1=v1*s; v2=v2*s; v3=v3*s;}
	double dotProduct (Vec3D v) {double x=v1*v.v1+v2*v.v2+v3*v.v3; return x;}
	double norm () {double x=Math.sqrt(v1*v1+v2*v2+v3*v3); return x;}
	public String toString(Vec3D v) {String x="("+v1+"/"+v2+"/"+v3+")"; return x;}
}

nun schreibe ich ein Programm, welches die vektoroperationen von der obigen klasse durchführen kann:

Code:
import java.io.*;
class Vektoren{

	static String readln(){
		InputStreamReader isr = isr = new InputStreamReader (System.in);
		BufferedReader br = new BufferedReader (isr);
		String s=null;
		try {
			s= br.readLine();
		}
		catch (IOException ioe) {
			System.err.println(ioe);
		}
		return s;
	}

	public static void main (String[]arg){
	double x=Double.parseDouble(arg[0]);
	double y=Double.parseDouble(arg[1]);
	double z=Double.parseDouble(arg[2]);
	Vec3D v1= new Vec3D(x,y,z);
	System.out.println("Was wollen sie tun? Addition=1, skal. Multipl=2, dotP=3, Länge=4");
	int op=Integer.parseInt(readln());
	switch (op) {
		case 1: {System.out.println("Geben sie noch einen Vektor an");
                                            Vec3D v2= new Vec3D(3,4,5);  Stringout=toString(v1.add(v2)); break;}
		default: System.out.println("Error"); break;
		}
	//System.out.println(out);
	
	
	
}}

nun gibt es aber probleme beim zugriff auf vec3d und probleme bei der funktion tostring. Was mache ich falsch?
 

L-ectron-X

Gesperrter Benutzer
Der Code ist, was die Lesbarkeit angeht, eine Zumutung. Wo hast Du so was gelernt? :?
Beim Kompilieren der Klasse Vec3D werden Fehler vom Compiler angezeigt, die auf fehlende return statements hinweisen. Ansonsten wären genaue Fehlermeldungen/-beschreibungen schön gewesen.
So weit erst mal.
 

lenny

Mitglied
gelertn beim selbststudium, fehlermeldungen:
im stile:
symbol: class vec3d
locatation: class vektoren
mit pfeil auf new >Vec3D(x,y,z)...

ps: wie soll ich den code lesbarer machen/schreiben?
 

L-ectron-X

Gesperrter Benutzer
Die Lesbarkeit des Codes kannst Du positiv beeinflussen, in dem Du z.B. die Codezeilen vernünftig einrückst und auf jeden Fall nur eine Zeile je Anweisung schreibst. Die obige Klasse Vec3D ist ein schlechtes Beispiel für Codestyle.
Bleibt immer noch der Fehler mit den Rückgabewerten. Du hast dort nur drei Variablen gesetzt.
Code:
Vec3D add(Vec3D v) {
  v1=v1+v.v1;
  v2=v2+v.v2;
  v3=v3+v.v3;
}
Die Methode soll ein Vec3D-Objekt zurück geben. Da fehlt ein Rückgabewert. Ebenso in der multiply()-Methode.
 
B

Beni

Gast
ps: wie soll ich den code lesbarer machen/schreiben?


Zum Beispiel könntest du sowas schreiben. Du siehst sicher den Unterschied: Aussagekräftigere Namen und Einrückungen. Ich hab mir mal die Kommentare gesparrt, und nur für add ein Beispiel gemacht.
Code:
public class Vector3D {
	private double x, y, z;
	Vector3D (double x, double y, double z) {
        	this.x=x;
		this.y=y;
		this.z=z;
	}

	public double getX(){
		return x;
	}

	public void setX( double x ){
		this.x = x;
	}

	/*
	* Zählt einen anderen Vektor komponentenweise zu diesem hinzu.
	* @param v Der zweite Summand.
	*/
	public void add(Vector3D v){
		x = x + v.x;
		y = y + v.y;
		z = z + v.z;
	}

	public void multiply(double s){
		x *= s;
		y *= s;
		z *= s;
	}


	public double dot( Vector3D v ){
		return x*v.x + y*v.y + z*v.z;
	}

	public double norm (){
		return Math.sqrt( dot( this ) );
	}

	public String toString(){
		return "("+x+"/"+y+"/"+z+")";
	}
}
 

lenny

Mitglied
Ich habe nun die Die Klasse Vec3D so umgeschrieben:

Code:
class Vec3D {

	double v1, v2,v3;

	Vec3D (double v1, double v2, double v3) {
		this.v1=v1;
		this.v2=v2;
		this.v3=v3;
	}

	Vec3D add(Vec3D v) {
		v1=v1+v.v1;
		v2=v2+v.v2;
		v3=v3+v.v3;
		x= new Vec3D(v1,v2,v3);
		return x;
	}

	Vec3D multiply(double s) {
		v1=v1*s;
		v2=v2*s;
		v3=v3*s;
		x= new Vec3D(v1,v2,v3);
		return x;
	}

	double dotProduct (Vec3D v) {
		double x=v1*v.v1+v2*v.v2+v3*v.v3
		return x;
	}

	double norm () {
		double x=Math.sqrt(v1*v1+v2*v2+v3*v3)
		return x;
	}

	public String toString() {
		return "("+v1+"/"+v2+"/"+v3+")";
	}

}


Doch es kommen immer noch die gleichen fehlermeldungen:

C:\java\3>javac Vektoren.java
Vektoren.java:21: cannot resolve symbol
symbol : class Vec3D
location: class Vektoren
Vec3D v1= new Vec3D(x,y,z);
^
Vektoren.java:21: cannot resolve symbol
symbol : class Vec3D
location: class Vektoren
Vec3D v1= new Vec3D(x,y,z);
^
Vektoren.java:25: cannot resolve symbol
symbol : class Vec3D
location: class Vektoren
case 1: {System.out.println("Geben sie noch einen Vektor an"); V
ec3D v2= new Vec3D(3,4,5); v1.add(v2); break;}
^

Vektoren.java:25: cannot resolve symbol
symbol : class Vec3D
location: class Vektoren
case 1: {System.out.println("Geben sie noch einen Vektor an"); V
ec3D v2= new Vec3D(3,4,5); v1.add(v2); break;}

^
4 errors

Wie gesagt, Vec3D.java liegt im Java inst.Verzeichnis/java/io/Vec3D.java
 

Griffin

Bekanntes Mitglied
Warum gibst du es nicht ins selbe Verzeichnis wie die Klasse Vektoren?
Macht doch auch bischen wenig Sinn die eigene Klasse ins java/io-Verzeichnis zu tun. Erstens: Das IO Package ist für In- und Output und damit hat deine Klasse nichts zu tun. Zweitens: Deine Klassen solltest du immer zusammen aufbewahren.
 

lenny

Mitglied
ok, habe nun die klasse zurückkopiert. nun erhalte ich folgende fehlermeldungen:

C:\java\3>javac Vektoren.java
.\Vec3D.java:15: cannot resolve symbol
symbol : variable x
location: class Vec3D
x= new Vec3D(v1,v2,v3);
^
.\Vec3D.java:16: cannot resolve symbol
symbol : variable x
location: class Vec3D
return x;
^
.\Vec3D.java:23: cannot resolve symbol
symbol : variable x
location: class Vec3D
x= new Vec3D(v1,v2,v3);
^
.\Vec3D.java:24: cannot resolve symbol
symbol : variable x
location: class Vec3D
return x;
^
4 errors
 

L-ectron-X

Gesperrter Benutzer
Die Variable x in Vec3D ist nicht definiert. So wird's schon eher was:
Code:
  ...
  ...
  ...
  Vec3D x= new Vec3D(v1,v2,v3);
  return x;
}
oder diese Variante sollte auch funktionieren:
Code:
return new Vec3D(v1,v2,v3);
 

Griffin

Bekanntes Mitglied
Code:
Vec3D add(Vec3D v) {
      v1=v1+v.v1;
      v2=v2+v.v2;
      v3=v3+v.v3;
      //Der Typ muss festgelegt werden
      Vec3D x= new Vec3D(v1,v2,v3);
      return x;
   }

   Vec3D multiply(double s) {
      v1=v1*s;
      v2=v2*s;
      v3=v3*s;
      //hier das selbe
      Vec3D x= new Vec3D(v1,v2,v3);
      return x;
   }
 

lenny

Mitglied
So, jetzt hab ichs glaub fast geschafft. Nur eins ist mit noch nicht ganz klar: ich kann ja jetzt zum beispeil a.multiply(b) machen. nun will ich das am bildschirm ausgeben. wie muss ich jetzt das machen. String out=toString(a.multiply(b)), geht ja nicht. Wie muss ich dann toString anwenden?
Vielen Dank Lenny.
 

L-ectron-X

Gesperrter Benutzer
Jetzt überleg mal. Wenn Du eine Methode eines Objekts aufrufen möchtest, wie machst Du das?
Genau!
Code:
referenz.methode();
Also ruft die Referenz auf ein Objekt vom Typ Vec3D die Methode toString() auf.
Wenn wir bei obigen Bsp. bleiben sieht das so aus:
Code:
x.toString();
Und was in diesem Fall auch funktioniert:
Code:
System.out.println(x);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
C Auf die Methode einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 1
Vivien Auf eine Variable von einer anderen Klasse aus zugreifen Java Basics - Anfänger-Themen 3
itsmejo Erste Schritte Auf Attribut einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 14
S Auf Methode einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 3
M Auf erstelltes Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 5
X Auf Attribut einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 2
F Auf Array einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 4
S Auf Array einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 13
F Aus einer anderen Klasse auf ein JTextField zugreifen Java Basics - Anfänger-Themen 17
DaCrazyJavaExpert Klassen Von einer Klasse auf eine erbende Klasse zugreifen Java Basics - Anfänger-Themen 13
R Auf Variablen einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 1
E Methoden Auf Methoden einer Klasse zugreifen, ohne ein Objekt zu erstellen Java Basics - Anfänger-Themen 2
M Auf die Variable einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 9
B Wie kann man auf das JFrame einer anderen Klasse zugreifen, etwas hinzufügen und entfernen?? Java Basics - Anfänger-Themen 3
T Klassen In einer Klasse auf ein Button zugreifen Java Basics - Anfänger-Themen 5
N Klassen auf den Action Listener in einer andere Klasse zugreifen Java Basics - Anfänger-Themen 6
R Auf get-Methode von ArrayList zugreifen von Methode einer Klasse Java Basics - Anfänger-Themen 2
L Methoden Auf statische Methode einer anderen Klasse zugreifen, die Array zurückgibt Java Basics - Anfänger-Themen 3
S OOP Auf ein Objekt von einer anderern Klasse zugreifen Java Basics - Anfänger-Themen 3
S Von einer Klasse auf eine Liste einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 8
I Von einer Methode eines Objektes auf Attribut eines Objektes anderer Klasse zugreifen Java Basics - Anfänger-Themen 4
S OOP kann ich von einer Klasse aus auf andere Objekte zugreifen? Java Basics - Anfänger-Themen 7
C Von einer Klasse auf die nächste Zugreifen und die Methode nutzen? Java Basics - Anfänger-Themen 5
P Auf Methoden einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 7
J Von einer Klasse auf Variablen der anderen Klasse zugreifen Java Basics - Anfänger-Themen 8
G auf Objekte in einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 4
P Auf Textfelder einer anderen Klasse zugreifen? Java Basics - Anfänger-Themen 2
A auf objekte in einer bereits bestehenden klasse zugreifen Java Basics - Anfänger-Themen 2
G aus Klasse auf Objektvariable einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 12
C auf Variablen von Methoden einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 7
T Aus Elemente einer anderen Klasse zugreifen Java Basics - Anfänger-Themen 11
M Aus einer Klasse auf Array einer anderen zugreifen. WIE? Java Basics - Anfänger-Themen 4
U Warum kann ich, auf private Variablen zugreifen, wenn ich ein Objekt in der Klasse, die private Variablen hat erstelle und dort drauf zugreifen will? Java Basics - Anfänger-Themen 7
T Auf Instanz der selben Klasse aus überschriebener Methode in Methode zugreifen. Java Basics - Anfänger-Themen 2
C Methoden können nicht auf Instanzvariable der Klasse zugreifen Java Basics - Anfänger-Themen 3
N Klassen Warum kann meine Klasse nicht auf Methoden der anderen Klasse zugreifen? Java Basics - Anfänger-Themen 6
W Zwei Programme sollen auf eine Klasse zugreifen Java Basics - Anfänger-Themen 18
G Klassen Mit fremder Klasse auf public Methode zugreifen Java Basics - Anfänger-Themen 23
A Variablen Main Klasse soll auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 3
K Erste Schritte JavaFX - wie von "externer" Klasse auf Methoden des Controllers zugreifen Java Basics - Anfänger-Themen 2
J Best Practice Auf DefaultTableModel in andere Klasse zugreifen Java Basics - Anfänger-Themen 4
A Variablen In anderer Klasse auf Objekte von JFrame zugreifen Java Basics - Anfänger-Themen 1
K OOP Mit anderer Klasse auf JTextField zugreifen Java Basics - Anfänger-Themen 5
H Klassen auf eigene Klasse zugreifen Java Basics - Anfänger-Themen 2
N Auf TextFeld aus anderer Klasse zugreifen ohne es zu übergeben Java Basics - Anfänger-Themen 3
P auf eine andere Klasse zugreifen Java Basics - Anfänger-Themen 12
B Klassen Auf Instanz anderer Klasse zugreifen Java Basics - Anfänger-Themen 1
S Klassen Auf Objekt in Klasse A in Klasse B zugreifen Java Basics - Anfänger-Themen 4
C Klasse auf mehrere Objekte zugreifen lassen Java Basics - Anfänger-Themen 26
Shams Kann man von einem Interface aus auf die dieses implementierende Klasse zugreifen? Java Basics - Anfänger-Themen 4
G Auf Objekt der selben Klasse zugreifen Java Basics - Anfänger-Themen 2
G Klassen Richtig auf jTextArea aus anderer Klasse zugreifen? Java Basics - Anfänger-Themen 3
G OOP Aus Objekt auf Funktion der erzeuger Klasse zugreifen? Java Basics - Anfänger-Themen 11
K Kapselung Von Klasse auf Objekt zugreifen Java Basics - Anfänger-Themen 8
A Mit Methode auf Methode derselben Klasse zugreifen Java Basics - Anfänger-Themen 3
A Auf Array in gesamter Klasse zugreifen Java Basics - Anfänger-Themen 6
L aus package auf klasse Ausserhalb des package zugreifen, wie? Java Basics - Anfänger-Themen 8
L Über abstrakte Klasse auf eine Klasse zugreifen? Java Basics - Anfänger-Themen 6
I auf Textfeld aus anderer Klasse heraus zugreifen Java Basics - Anfänger-Themen 2
B auf Methode andeer Klasse zugreifen Java Basics - Anfänger-Themen 2
F wie auf eine andere Klasse zugreifen? Java Basics - Anfänger-Themen 2
A [gelöst]Aus der Klasse heraus auf ein anderes Objekt zugreifen Java Basics - Anfänger-Themen 4
H auf variablen ausserhalb der ausgeführten klasse zugreifen Java Basics - Anfänger-Themen 3
C Auf eine Klasse byteweise zugreifen Java Basics - Anfänger-Themen 16
L zugreifen auf erzeugte Klasse unter static? Java Basics - Anfänger-Themen 5
A Per ActionListener auf andere klasse zugreifen Java Basics - Anfänger-Themen 13
S Von anderer Klasse auf Label zugreifen Java Basics - Anfänger-Themen 6
M Von Instanz auf instanzierende Klasse zugreifen Java Basics - Anfänger-Themen 5
V Auf protected ArrayList von anderer Klasse zugreifen Java Basics - Anfänger-Themen 4
G Auf eine Klasse zugreifen,von welcher man nur den Pfad weiss Java Basics - Anfänger-Themen 4
T Auf Klasse in anderer Klasse zugreifen Java Basics - Anfänger-Themen 6
R Klasse in einem Package soll auf Hauptverzeichnis zugreifen Java Basics - Anfänger-Themen 7
R Klasse aus Packet kann nicht außerhalb zugreifen Java Basics - Anfänger-Themen 8
ven000m Von Datei X auf Klasse in Datei Y zugreifen! Java Basics - Anfänger-Themen 8
I @Inject in normaler Klasse? Java Basics - Anfänger-Themen 4
P Enum oder normale Klasse? Java Basics - Anfänger-Themen 10
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
P Wie kann ich meine Keylistener Klasse unterscheiden lassen, von welcher "Quelle" der Input kommt? Java Basics - Anfänger-Themen 2
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
Amina556 Eigene Klasse definieren Java Basics - Anfänger-Themen 9
berserkerdq2 Intelij, wie kann ich einstellen, dass die aktuelle Klasse ausgeführt wird, wenn ich aufs Startsymbol drücke, gibts da eine Tastenkombination? Java Basics - Anfänger-Themen 11
M Klasse in Runden Klammern bei Objektimplementierung Java Basics - Anfänger-Themen 4
J Klassen Klasse als Komponententyp bei Feldern Java Basics - Anfänger-Themen 2
J Klassen Instanzen einer Klasse in einer anderen unabhängigen Klasse nutzen Java Basics - Anfänger-Themen 4
Detlef Bosau nichtstatische Innere Klasse, this Pointer. Java Basics - Anfänger-Themen 47
C Unbekannte Methode add bei Klasse die JTree erweitert Java Basics - Anfänger-Themen 14
J Zugriff auf eine 2. Klasse die per UI-Designer erstellt wurde Java Basics - Anfänger-Themen 1
B Wie kann ich folgende Klasse/Methode per Button ausführen? Java Basics - Anfänger-Themen 1
B Klasse statisch erstellen da n-mal geladen Java Basics - Anfänger-Themen 3
T Meine Klasse wird nicht gefunden Java Basics - Anfänger-Themen 1
XWing Random Punkte erstellen mit der Random klasse Java Basics - Anfänger-Themen 15
_user_q Wie eine Methode/Funktion aus einer Klasse mit Constructor aufrufen? Java Basics - Anfänger-Themen 20
frager2345 Optional Klasse Java Java Basics - Anfänger-Themen 2
frager2345 Singleton-Muster Java ->Nur eine Instanz einer Klasse erzeugen können Java Basics - Anfänger-Themen 45
H Klassen Typ und Intitialisierungs-Klasse, wer bestimmt was? Java Basics - Anfänger-Themen 1
P Array vom Typ Klasse Java Basics - Anfänger-Themen 18
T Thread beenden aus zweiter Klasse Java Basics - Anfänger-Themen 4
frager2345 Java Klasse Buch verwalten Java Basics - Anfänger-Themen 0
frager2345 Java eigen Klasse zum verwalten von Büchern Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben