Methode zum Verschieben innerhalb eines Bereichs

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.

Wü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
 
Zuletzt bearbeitet:

httpdigest

Top Contributor
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?
 
Ich suche im Internet nach Ansätzen und Methoden die mir helfen diese Aufgabe zu lösen nur ich finde nichts zu diesem Thema.

Java:
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;
        }
   
}
Java:
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
 
Zuletzt bearbeitet:

Javinner

Top Contributor
@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.
 
Ok ich habe an der Formel rum gespielt

Java:
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;}
}

Java:
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

Top Contributor
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

Top Contributor
@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

Top Contributor
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.

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.
 
Zuletzt bearbeitet:

Neue Themen


Oben