# Methode zum Verschieben innerhalb eines Bereichs



## gentlemanjacko (31. Mai 2018)

*JAVA*
Implementiere in der Klasse Punkt eine Methode verschiebeInnerhalb(), die

einen Punkt um einen Vektor (Δx, Δy) verschiebt. Allerdings soll das Verschieben nur

innerhalb eines quadratischen Bereichs von -10 bis 10 auf der x- und y-Achse erlaubt sein.

Würde der Punkt nach der Verschiebung außerhalb dieses Bereichs liegen, sollte er nicht

verschoben werden.

Teste die Methode in der Klasse PunktMain indem du auf einem Punkt

verschiebeInnerhalb() nacheinander mit geeigneten Werten aufrufst und jeweils

anschließend die Koordinaten ausgibst.

*Lösung bitte*


----------



## httpdigest (31. Mai 2018)

Welche Ideen und Lösungsansätze hast du denn schon verfolgt und bei welchen von denen hast du aktuell Probleme, die man helfen kann, zu lösen?


----------



## gentlemanjacko (31. Mai 2018)

Ich suche im Internet nach Ansätzen und Methoden die mir helfen diese Aufgabe zu lösen nur ich finde nichts zu diesem Thema.


```
public class Punkt {

        private int x;
        private int y;

        public void verschiebe(int deltaX, int deltaY) {
       
        x = x + deltaX;
        y = y + deltaY;
        }
       
        public void setX(int newX) {
        x = newX;
        }
        public void setY(int newY) {
        y = newY;
        }
        public int getX() {
        return x;
        }
        public int getY() {
        return y;
        }
   
}
```


```
public class hzgte {

   
        public static void main(String[] arg) {
       
            Punkt p1 = new Punkt();
       
            p1.setX(10);
            p1.setY(-11);
       
        System.out.println("x=" + p1.getX());
        System.out.println("y=" + p1.getY());
       
        }
   
}
```

Ich kann die Koordinate nicht eingrenzen x - Achse (-10 bis 10) , y - Achse (-10 bis 10)
z.B. wenn ein punkt ausserhalb der Koordinate sich befindet soll es Fehler anzeigen


----------



## Javinner (31. Mai 2018)

@gentelemanjacko
Eventuell ist es das hervorgehobene `[B]Lösung bitte[/B]`, ganz ohne den Beleg, was du schon alles dafür getan hast, der Aufgabe Herr zu werden, welches bei einigen auf Ablehnung stößt.. Man weiß es nicht genau..
Na jedenfalls, schau dir das hier an. Beinhaltet dein Problem und liefert eine mögliche Lösung.
http://openbook.rheinwerk-verlag.de/javainsel/03_005.html


----------



## gentlemanjacko (31. Mai 2018)

Sorry, Ich habe einfache keine Ahnung und brauche dringend Hilfe. Musterlösung wäre sehr sehr nett, danke.


----------



## Javinner (31. Mai 2018)

@gentlemanjacko 
Musterlösung.. Hm, ich bin abgeneigt, Anhand deiner Bemühungen dir eine auszuhändigen..
Christian Ullenboom ist es nicht, schau dir das von mir verlinkte Kapitel an. Dort steht alles drin, was dich weiter bringt.


----------



## mrBrown (31. Mai 2018)

gentlemanjacko hat gesagt.:


> Sorry, Ich habe einfache keine Ahnung und brauche dringend Hilfe. Musterlösung wäre sehr sehr nett, danke.


Was zahlst du denn?


----------



## gentlemanjacko (31. Mai 2018)

Ok ich habe an der Formel rum gespielt 


```
public class Punkt {
    int x;
    int y; 
    public void setX (int i) {x=i;}
    public void setY (int i) {y=i;}
    public void verschiebe (int delX, int delY) {
        x = x + delX;
        y = y + delY;
    }


    public int getX() {return x;}
    public int getY() {return y;}
}
```


```
public class TestPunkt {
    public static void main (String [] args) {
        Punkt p1 = new Punkt ();
        p1.setX(10); p1.setY(10);
        p1.verschiebe(3,2);
        System.out.println(p1.getX());
        System.out.println(p1.getY());
       
    }
}
```

Der Punkt soll nur dann verschoben werde, wenn er sich noch in dem Bereich befindet, wenn nicht soll er erst garnicht verschoben werden. Ich habe ausprobiert, aber bei mir wird der Bereich auch verschoben, wenn er nicht in dem Bereich liegt. Bitte um schnelle HILFEEE!! ;(

- Ich muss setX und setY erweitern und muss prüfen ? wie geht das.


----------



## httpdigest (31. Mai 2018)

Was hat sich denn da jetzt im Vergleich zu deinem letzten Post mit Code effektiv geändert, außer, dass du nun einen Aufruf von `p1.verschiebe(3, 2)` drin hast?
Also ganz ehrlich, lese vielleicht erstmal ein Java Buch bzw. Einsteigertutorial zu Java. Dir fehlen die aller grundlegendsten Kenntnisse, z.B. bezüglich if-Anweisungen.


----------



## Javinner (31. Mai 2018)

@gentlemanjacko
Wie du es selbst sagst: es darf ein Bereich nicht überschreiten.

Was hast du also: du hast ein Punkt, welcher eine Position, durch X und Y gegeben, im zweidimensionalem Raum inne hat. Nun darf dieser eine Grenze, welche eine eigene Position, Breite und Höhe hat, nicht überschreiten. Also muss! der Punkt immer *innerhalb *der Grenze bleiben.


----------



## temi (1. Jun 2018)

httpdigest hat gesagt.:


> Was hat sich denn da jetzt im Vergleich zu deinem letzten Post mit Code effektiv geändert, außer, dass du nun einen Aufruf von p1.verschiebe(3, 2) drin hast?


Die Parameter heißen jetzt "delX" und "delY" anstatt "deltaX" und "deltaY"...

@gentlemanjacko Diese Namensänderung hat keinen Einfluss auf das Verhalten des Programmes, aber hat einen deutlichen Einfluss auf die Lesbarkeit. "deltaX" zeigt an, dass es sich um eine Differenz handeln wird, während "delX" bei mir eher delete = löschen assoziiert.



gentlemanjacko hat gesagt.:


> Ich muss setX und setY erweitern und muss prüfen ? wie geht das.


Du musst nicht setX und setY erweitern, sondern "verschiebe".
Ganz einfach gesagt, musst du mittels einer if-Anweisung prüfen, ob die Ergebnisse der Rechnung innerhalb des erlaubten Bereiches liegen. Falls ja, dann kannst du die neuen x,y-Positionen zuweisen, andernfalls nicht.


----------



## httpdigest (1. Jun 2018)

temi hat gesagt.:


> Die Parameter heißen jetzt "delX" und "delY" anstatt "deltaX" und "deltaY"...


Äh ja, vielen Dank. Und sicher sind noch ein paar Leerzeichen hinzugekommen.  Ich meinte "effektive" Änderungen...


----------



## temi (1. Jun 2018)

httpdigest hat gesagt.:


> Ich meinte "effektive" Änderungen...


Schon klar


----------

