# Punkt. Instanzmethode



## Hornhauer100 (3. Dez 2014)

Hallo,

ich bin gerade an einer Aufgabe dran und komme nun nicht mehr weiter. 

Ich soll eine Instanzmethode (public void shift(double weite) schreiben, die den Punkt um die angegebenem Weite waagerecht auf der Zeichenebene verschiebt. Bin noch ein totaler Neuling und habe eventuell überlegt, ob das mit der Printf Methode geht????:L Bzw. ich verstehe auch nicht so wirklich die Aufgabenstellung 
Momentaner Code:

```
package Testat2;

public class Punkt {

	private	double x ;
	private double y;
	
	public Punkt(double x, double y){
		this.x = x;
		this.y = y;
	}
	public Punkt(){
		System.out.println("Erzeugen einer Instanz der Klasse Punkt");
		System.out.println("geben Sie die x-Koordinate des Punktes an:");
		this.x = EAM.rDouble();
		System.out.println("geben Sie die y-Koordinate des Punktes an:");
		this.y = EAM.rDouble();
	}
	public double getX() {
		return x;
	}
	public double getY() {
		return y;
	}
}
```


Vielen Dank schon einmal für die Hilfe


----------



## Joose (3. Dez 2014)

Warum gerade die "printf" Methode? Was macht denn die "printf" Methode?

Es steht doch eh genau in der Aufgabenstellung drinnen was verlangt ist du sollst eine Instanzmethode schreiben (sprich eine nicht statische Methode in der Klasse "Punkt").
In dieser Methode sollst du die Werte x bzw. y anpassen.


----------



## Hornhauer100 (3. Dez 2014)

Also sozusagen, an welchem Punkt im "Koordinatensystem" mein X bzw. Y Punkt sein soll?
Aber mit welchem Befehl kann man denn diesen Punkt verschieben? Oder muss ich nur den X/Y Punkt eine Variable zuweisen?


----------



## Joose (4. Dez 2014)

Hornhauer100 hat gesagt.:


> Aber mit welchem Befehl kann man denn diesen Punkt verschieben? Oder muss ich nur den X/Y Punkt eine Variable zuweisen?



Die Instanzvariablen x und y stellen die Koordinaten im Koordinatensystem dar. Wenn du nun den Punkt verschieben willst musst du diese beiden Variablen anpassen.


----------



## Hornhauer100 (4. Dez 2014)

Aber eigentlich werden die Koordinaten doch schon durch die Abfrage System.out.println angepasst, in dem ich dort abfrage, wo die x/y Koordinate ist? 
Ich glaube ich gebe es einfach auf


----------



## VfL_Freak (4. Dez 2014)

Moin,



Hornhauer100 hat gesagt.:


> Aber eigentlich werden die Koordinaten doch schon durch die Abfrage System.out.println angepasst, in dem ich dort abfrage, wo die x/y Koordinate ist?


Bitte was ???
Das 'println' gibt lediglich Text in der Konsole aus ... das wird nix abgefragt und schon gar nix angepasst!!

Gruß
Klaus


----------



## Hornhauer100 (4. Dez 2014)

Was ist denn dann mit anpassen gemeint? Hättest du eventuell ein anderes Beispiel oder so? :/


----------



## VfL_Freak (4. Dez 2014)

Ääh, DU hattest doch "anpassen" geschrieben ...


----------



## Hornhauer100 (4. Dez 2014)

Weil Joose das so formuliert hat. Nur weiß ich ja leider nicht, was damit gemeint ist, bzw., wie ich das als Code umsetzen kann.


----------



## VfL_Freak (4. Dez 2014)

Schreib' die verlangte Methode "public void shift(double weite)", in der dann 'x' um den Wert 'weite' geändert wird!


----------



## Hornhauer100 (4. Dez 2014)

Okay, habe mich jetzt mal versucht, glaube aber nicht, dass es wirklich richtig ist :/


```
public void shift(double weite){
		System.out.println("Bitte geben Sie an, wie weit die x-Koordinate verschoben werden soll");
		weite = EAM.rDouble(); //EAM = internet Funktion unserer Uni zur Speicherung von Variablen etc.
		
		weite = weite + x;
	}
```


----------



## VfL_Freak (4. Dez 2014)

Moin,



Hornhauer100 hat gesagt.:


> Okay, habe mich jetzt mal versucht, glaube aber nicht, dass es wirklich richtig ist :/


Sorry, aber ich auch nicht 



Hornhauer100 hat gesagt.:


> ```
> public void shift(double weite)
> {
> System.out.println("Bitte geben Sie an, wie weit die x-Koordinate verschoben werden soll");
> ...


Du sollst doch die Weite an die Funktion übergeben ... warum also innerhalb nochmal abfragen?
Sodann soll ja der 'x'-Wert verschoben und nicht die Weite .....

Also, warum nicht einfach so ??

```
public void shift(double weite)
{
     x +=weite;
}
```

Gruß
Klaus


----------



## Hornhauer100 (4. Dez 2014)

ok danke 

und wenn der Punkt bei Positiven Zahlen nach rechts und bei negativen Zahlen nach links verschoben werden soll, würde das doch einfach mit einer if else verzweigung gehen?


```
public void shift(double weite){
		if(x > 0){
			x = x + weite;
		} else 
			x = x - weite;
		
	}
```


----------



## Joose (4. Dez 2014)

Hornhauer100 hat gesagt.:


> und wenn der Punkt bei Positiven Zahlen nach rechts und bei negativen Zahlen nach links verschoben werden soll, würde das doch einfach mit einer if else verzweigung gehen?



Was passiert wenn du zu einer Zahl X eine negative Zahl addierst? *X = X + (-5)*
Es wird hier keine Unterscheidung benötigt.


----------



## VfL_Freak (4. Dez 2014)

Warum??

*x += weite* reicht doch völlig!

sei x = 10
bei "weite 5"  ==>  15
bei "weiter -5"  ==>  5 (da 10 + -5 = 5)

Simpelste Mathematik :bae:

Gruß
Klaus


----------



## Hornhauer100 (4. Dez 2014)

ok, vielen Dank euch. Das ergibt Sinn 
Irgendwie denke ich immer zu kompliziert bzw. muss mich in die Logik von Java besser einarbeiten, damit ich wenigstens die Grundlagen irgendwann mal verstehen werde >:<


----------

