Methoden format() mit Point(x, y)-Objekt

Kel

Aktives Mitglied
Java:
public class Kreis {

	private Point mittelpunkt;
	private double radius;
	
	public Kreis(int x, int y, double radius) {
		this.mittelpunkt = new Point(x, y);
		this.radius = radius;
	}

public void zeichnen() {
		String a = String.format("Kreis mit dem Radius %.1f und dem Mittelpunkt %'Formatanweisung' wurde gezeichnet", radius, mittelpunkt);
		System.out.println(a);
	}

	public static void main (String[] args) {
		Kreis kreis = new Kreis(3, 3, 2.2);
		kreis.zeichnen();
	}
}

Ich muss den Mittelpunkt im String ausgeben, ginge theoretisch ohne
Code:
format()
, indem ich einfach das Objekt einfüge -
Code:
"Mittelpunkt ist: " + mittelpunkt
Oder ich mach es mit
Code:
format()
, nutze aber einfach die Koordinaten
Code:
x, y
als Argumente (müsste ich dann nur noch deklarieren).
Aber gibt es nicht auch eine Möglichkeit, das ganze mit
Code:
format()
und dem Point-Objekt zu gestalten?
 
Zuletzt bearbeitet:
S

SlaterB

Gast
du kannst auch mittelpunkt.x, mittelpunkt.y an format übergeben,
das mittelpunkt-Objekt selber aber nicht wirklich, falls nicht zufällig dessen toString() aufgerufen wird,

anscheinend geht das mit %s, ist es das was du brauchst aber nicht selber suchen wolltest? ;)
Formatter (Java Platform SE 6)
 

Kel

Aktives Mitglied
mittelpunkt.x und mittelpunkt.y ist ziemlich das, was ich brauche :).
Aber ich dachte, dazu hat man mittelpunkt.getX() und mittelpunkt.getY() aus der Point/Point2D-Klasse?

Wenn ich die Beschreibung richtig geschrieben habe, wandelt %s mein Argument einfach in einen String um, oder?
Da ich jetzt mittelpunkt.x kenne, nehme ich lieber %,d.
 
Zuletzt bearbeitet:
S

SlaterB

Gast
> Aber ich dachte, dazu hat man mittelpunkt.getX() und mittelpunkt.getY() aus der Point/Point2D-Klasse?

ist doch dasselbe, nur schönerer Zugriff aus gewisser Sicht, hängt alles davon ab ob die Methoden vorhanden sind und/ oder die Attribute direkt sichtbar/ public
 

Kel

Aktives Mitglied
ist doch dasselbe, nur schönerer Zugriff aus gewisser Sicht, hängt alles davon ab ob die Methoden vorhanden sind und/ oder die Attribute direkt sichtbar/ public
Das interessiert mich jetzt.

Java:
import java.awt.Point;
import java.awt.geom.Point2D;

public class Kreis

	private Point mittelpunkt;
	private double radius;

	public Kreis(int x, int y, double radius) {
		this.mittelpunkt = new Point(x, y);
		this.radius = radius;
	}

public Strecke generiereStrecke(float f) {
		int x = (int) (Math.cos(f) * radius);
		int y = (int) (Math.sin(f) * radius);
		// Point2D Strecke = new Point2D.Double(x, y);
		Strecke strecke = new Strecke(x, y, 0, 0);
		return strecke;
	}
	
	public static void main (String[] args) {
		Kreis kreis = new Kreis(3, 4, 2.5);
		Strecke foo = kreis.generiereStrecke(143);
		System.out.println(foo.getPunktA().x + " " + foo.getPunktA().y);
		System.out.println(foo.punktA);
		System.out.println(foo.punktA.getX());
	}

Java:
package figur;

import java.awt.Point;
import java.awt.geom.Point2D;

public class Strecke implements IStrich, IGeneriereStrecke {
	
	private Point punktA;
	private Point punktB;
	
	// Strecke: Konstruktor der alle Variablen der Klasse Strecke setzt
	public Strecke(int x, int y, int a, int b) {
		this.punktA = new Point(x, y);
		this.punktB = new Point(a, b);
	}

	// GETTER und SETTER
	public Point getPunktA() {
		return punktA;
	}

	public void setPunktA(Point punktA) {
		this.punktA = punktA;
	}

	public Point getPunktB() {
		return punktB;
	}

	public void setPunktB(Point punktB) {
		this.punktB = punktB;
	}
	// GETTER und SETTER

		
	// Strecke: Die neue Strecke, soll die ursprüngliche Strecke skaliert um den Faktor f sein
	// Der neue Punkt C der in der neuen Strecke statt B wäre hat die Koordinaten: C= A+f*(B-A)
	@Override
	public Strecke generiereStrecke(float f) {
		int x = (int) (punktA.x + f * (punktB.x - punktA.x));
		int y = (int) (punktA.y + f * (punktB.y - punktA.y));
		Strecke strecke = new Strecke((int)punktA.getX(), punktA.y, x, y);
		return strecke;
	}
	
	public static void main (String[] args) {
		Strecke strecke = new Strecke(3, 3, 2, 2);
		Strecke test = strecke.generiereStrecke(50);
		System.out.println(String.format("Punkt A: [%,d , %,d] \nPunkt C: [%,d , %,d]", (int) test.punktA.x, test.punktA.y, test.punktB.x, test.punktB.y));
	}

}

Ich hab jetzt mit den 3 Zugriffsmöglichkeiten experimentiert:
1:
Code:
System.out.println(foo.getPunktA().x + " " + foo.getPunktA().y);
2:
Code:
System.out.println(foo.punktA);
3:
Code:
System.out.println(foo.punktA.getX());

1: Gettermethode, funktioniert wie erwartet
2 + 3:
The field Strecke.punktA is not visible


Ich erzeuge ja mit
Code:
Kreis kreis = new Kreis(3, 4, 2.5);
ein neues Kreisobjekt
rufe die Methode
Code:
public Strecke generiereStrecke(float f)
auf -
Code:
kreis.generiereStrecke(5)
und pack die Rückgabe (Strecke-Objekt) in eine neue Objektreferenz vom Typ Strecke
Code:
Strecke foo = kreis.generiereStrecke(5);

Code:
foo
ist ja jetzt eine Referenz vom Typ Strecke auf ein Strecke-Objekt (Rückgabetyp der Methode), also sollte foo doch Zugriff auf die Instanzvariablen von Strecke haben. Wieso geht dann trotzdem kein Zugriff? Methode 2+3 zeigen mir, dass das nicht so funktioniert wie gewünscht.
 
Zuletzt bearbeitet:

Landei

Top Contributor
Du bist ja nicht "in" foo, auch wenn du gerade eins "in der Hand hältst". Wenn das so erlaubt wäre wie du denkst, dann wären private Membervariablen überall zugreifbar.
 

Kel

Aktives Mitglied
Aber ich erzeuge doch ein Objekt vom Typ Strecke, das Objekt hat also auch die Instanzvariable
Code:
punktA
.
Wenn ich dem Objekt jetzt eine Objektreferenz vom Typ Strecke zuweise, dann sollte ich doch Zugriff auf alle private Methoden und Variablen haben.

private = nur innerhalb der Klasse sichtbar, foo ist aber doch eine eine Referenz auf ein Strecke-Objekt?
 

XHelp

Top Contributor
Ja, aber "innerhalb der Klasse" heißt, dass es nur innerhalb der Klasse Strecke sichtbar ist. Du versuchst aber darauf aus der Klasse Kreis zuzugreifen.
Dafür sind ja getter/setter ja auch da.
 

Kel

Aktives Mitglied
Achso, es kommt also nicht nur darauf an, ob ich ein Objekt der entsprechenden Klasse habe, sondern auch woher ich dieses Objekt "abrufe".

Ich dachte bis jetzt, dass ich mit einem Objekt einer Klasse auch Zugriff auf alle Instanzvariablen und Methoden der Klasse habe, unabhängig vom Ort der Instanziierung.

Ist mein Vorgehen im Code oben soweit korrekt mit der getter-Methode?
 

XHelp

Top Contributor
Probier es doch selber aus. Aber dei einem getter muss man sich schon anstrengen und kreativ sein um etwas falsch zu machen ;)
 

Kel

Aktives Mitglied
Meine Methode funktioniert ja soweit, die Variante mit punktA.x und punktA.getX() fand ich aber besser.

Hauptfrage war ja:
ist doch dasselbe, nur schönerer Zugriff aus gewisser Sicht, hängt alles davon ab ob die Methoden vorhanden sind und/ oder die Attribute direkt sichtbar/ public

Da weiss ich nicht, was genau gemeint ist. In der Dokumentation von Point steht zu
Code:
getX()
und
Code:
getY()
nichts spezifisches (Point (Java 2 Platform SE v1.4.2)).
 

XHelp

Top Contributor
In der Point-Klasse sind auch die x und y als
Code:
public int x
deklariert und nicht private. Deswegen klappt der Zugriff so.
Bei der Point-Klasse ist noch zu beachten, dass
Code:
somePoint.x
ein int liefert, aber
Code:
somePoint.getX()
ein double.
 

Kel

Aktives Mitglied
Okay, das mit int/double werd ich nochmal verwenden, um meinen Code etwas umzuschreiben.

Gerade ist ein neues Problem aufgetaucht: Ich muss das Objekt drehen
(neuen Thread aufmachen oder hier weiter? Ist ja eigentlich eher ein Matheproblem bzw. beides)
void drehen(int winkel)
Die Methode soll das Objekt in 90 Grad Schritten drehen(daher den Eckpunkt oder PunktA. Beim
Kreis macht eine Drehung keinen Unterschied)

Mir fehlen hier sämtliche mathematischen Ansätze, wie das zu bewerkstelligen wäre.
 

Landei

Top Contributor
Na für 90° braucht man keine Drehmatrix, da reicht ein Koordinatentausch x -> y, y -> -x (man beachte das Minus) oder so.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H SimpleDataFormat.format() spuckt falsches Jahr aus (statt 1999 = 3899) Java Basics - Anfänger-Themen 7
hebein PDF Ausdruck auf Drucker - Probleme mit Format Java Basics - Anfänger-Themen 17
berserkerdq2 Wie datum im default format speichern? Java Basics - Anfänger-Themen 5
R Timer Format: 00:00:00 Java Basics - Anfänger-Themen 29
I Format Problem mit Wert - bekomme 0,10 anstatt 10,00 Java Basics - Anfänger-Themen 6
N Best Practice How can I creat a programm with java under windows 10 in order to open an spreadsheet in libreoffice calc format Java Basics - Anfänger-Themen 11
A Out.format problem. Java Basics - Anfänger-Themen 3
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
W OOP Objektorientiert: Darstellung von Uhrzeiten im 24-Stunden-Format Java Basics - Anfänger-Themen 15
L Java Date Format ändern Java Basics - Anfänger-Themen 5
M JSON Format Java Basics - Anfänger-Themen 5
B Schleife erstellen mit String Format "001" bis "999" Java Basics - Anfänger-Themen 2
N jodaTime java.lang.IllegalArgumentException: Invalid format Java Basics - Anfänger-Themen 3
V Datentypen Richtiges Format abspeichern Java Basics - Anfänger-Themen 13
F JSON in dokumentierten Format als PDF Java Basics - Anfänger-Themen 3
J Jar Format Java Basics - Anfänger-Themen 4
J Programm im Jar-Format funktioniert nicht richtig Java Basics - Anfänger-Themen 9
I A0-Format in jpanel anzeigen Java Basics - Anfänger-Themen 1
M Variablen Ausgabe bei System.out.format? Java Basics - Anfänger-Themen 3
M String.format Java Basics - Anfänger-Themen 3
S Fehlermeldung bei format methode Java Basics - Anfänger-Themen 1
L Java Format Strings Java Basics - Anfänger-Themen 2
S String.format Fehler Java Basics - Anfänger-Themen 12
S Das richtige Format für den SOAP Zugriff Java Basics - Anfänger-Themen 0
C Welches Format gibt Java aus? Java Basics - Anfänger-Themen 5
G String auf Format prüfen Java Basics - Anfänger-Themen 3
A String auf Format überprüfen Java Basics - Anfänger-Themen 7
U String.format (%s, %d) für Nummern Java Basics - Anfänger-Themen 37
L Erste Schritte int-Format Java Basics - Anfänger-Themen 5
N Change date Format Java Basics - Anfänger-Themen 2
T String.format Exception Java Basics - Anfänger-Themen 7
M Simple Date Format Java Basics - Anfänger-Themen 2
C string-Format Java Basics - Anfänger-Themen 6
O Tabelle Formatieren mit system.out.format Java Basics - Anfänger-Themen 11
Z System.out.format, Hilfe. Java Basics - Anfänger-Themen 14
H format() - methode Java Basics - Anfänger-Themen 2
L X509 Zertifikat in PKCS#7 Format Java Basics - Anfänger-Themen 2
M Zeit von microsekunden auf Format mm:ss Java Basics - Anfänger-Themen 13
E formartierte Aussgabe mit JTextPane und String.format Java Basics - Anfänger-Themen 5
J java.util.format => mit String? Java Basics - Anfänger-Themen 2
Spin System.out.format Java Basics - Anfänger-Themen 2
N Datumseingabe im bestimmtem Format Java Basics - Anfänger-Themen 16
T scanner bestimmtes format abfragen Java Basics - Anfänger-Themen 5
D Bytes für WAV Format anpassen Java Basics - Anfänger-Themen 5
K Double Format Java Basics - Anfänger-Themen 4
-horn- Wie am Einfachsten mit Config-Datei umgehen. Welches Format? Java Basics - Anfänger-Themen 6
T Umwandeln in .jar - Format Java Basics - Anfänger-Themen 2
B Datumsstring umwandeln in richtiges dd.mm.yyyy format? Java Basics - Anfänger-Themen 2
R String.format() funktioniert nicht Java Basics - Anfänger-Themen 2
G String in Date Format umwandeln Java Basics - Anfänger-Themen 8
M String.format() max. Spaltenbreite Java Basics - Anfänger-Themen 2
G Time-Format-Klasse ode so Java Basics - Anfänger-Themen 2
P e-format Java Basics - Anfänger-Themen 5
H Format des Datums in Logdatei Java Basics - Anfänger-Themen 2
M Festes Format bei der Ausgabe einhalten! Java Basics - Anfänger-Themen 4
S long millisekunden nach Uhrzeit format Java Basics - Anfänger-Themen 5
S Java 1.5 System.out.format() Java Basics - Anfänger-Themen 2
R Alternative zu "Format" in Java 1.4 Java Basics - Anfänger-Themen 3
R Java 5.0 / String.format - Warning Java Basics - Anfänger-Themen 8
G Zeit auslesen in bestimmtem Format Java Basics - Anfänger-Themen 2
X Dezimal/-Hexcode in lebares format umwandeln Java Basics - Anfänger-Themen 4
V String Format Java Basics - Anfänger-Themen 4
B welches format hat java.sql.date? Java Basics - Anfänger-Themen 9
G format für int Java Basics - Anfänger-Themen 10
B Integer format bestimmen Java Basics - Anfänger-Themen 2
Vivien Kurze Verständnisfrage zu Java Point aus java.awt.* Java Basics - Anfänger-Themen 5
L Methode Point[], Array widergeben Java Basics - Anfänger-Themen 5
M XWPF - Bullet Point list erstellen Java Basics - Anfänger-Themen 1
TomatenBrot447 Variable vom Typ Point Java Basics - Anfänger-Themen 2
D 0 Point Exeption... aber warum? Java Basics - Anfänger-Themen 3
S double[x] , double[y] zu Point[] points kopieren? Java Basics - Anfänger-Themen 15
D Point-Array ausgeben Java Basics - Anfänger-Themen 2
V Anlegen eines 2 dim Array mit Point Elementen Java Basics - Anfänger-Themen 3
M Methoden Array unbedingt klonen? und Point Frage. Java Basics - Anfänger-Themen 4
F JavaKara - Rückgabetyp java.awt.Point Java Basics - Anfänger-Themen 2
L Klassen Point- und Math-Klasse Java Basics - Anfänger-Themen 3
L warum werden nicht die neuen Point Daten der Zeile 25 beim ausprinten Zeile 28 übernommen ? Java Basics - Anfänger-Themen 8
G Datentypen Floating point Fehler Java Basics - Anfänger-Themen 2
S Warum sind Attribute der Klasse java.awt.Point public? Java Basics - Anfänger-Themen 3
K OOP Point (int x, int y) Java Basics - Anfänger-Themen 6
D X Werte in ArrayList von Point Objekte alle gleich ? Java Basics - Anfänger-Themen 11
W Nullpointerexception: Integer auf Point Java Basics - Anfänger-Themen 4
T Problem mit Point Klasse Java Basics - Anfänger-Themen 2
A Point in ArrayList packen Java Basics - Anfänger-Themen 15
S Point-Objekte in Array einfügen Java Basics - Anfänger-Themen 13
J ArrayList<Point> in eine neue ArrayList<Point> kopieren Java Basics - Anfänger-Themen 8
B Vector<Point> als Rückgabewert Java Basics - Anfänger-Themen 23
G Abstrakte Klasse "Point" Java Basics - Anfänger-Themen 2
G Plugins bzw. Extension Point in Eclipse Java Basics - Anfänger-Themen 3
M Collections kopieren (ArrayList<Point>) Java Basics - Anfänger-Themen 3
M Array mit Point-Objecten Java Basics - Anfänger-Themen 2
M Ausgabe einer ArrayList ensteht nur als Hashcode, nicht als Objekt Java Basics - Anfänger-Themen 16
Rxiiz Objekt aus ComboBox entfernen Java Basics - Anfänger-Themen 4
I JSON in Objekt umwandeln Java Basics - Anfänger-Themen 3
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
B Objekt aus generalisierter Liste entfernen Java Basics - Anfänger-Themen 11
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
Say Objekt Java Basics - Anfänger-Themen 4
Say abstract class und Objekt erzeugen - Dringend Hilfe Java Basics - Anfänger-Themen 10

Ähnliche Java Themen

Neue Themen


Oben