# If Abfrage



## hos15 (21. Jul 2016)

Hallo alle zusammen ich habe eine kleine frage womit vermutlich keiner von euch ein Problem haben wird : 

Frage : Wie kann man die folgende Bedingungen abfragen? Tragen Sie den jeweiligen Ausdruck, den sie z. B. in eine if-Abfrage einsetzen würden, in die zweite Spalte der Tabelle ein. Getestet werden soll, ob

-der Absolutbetrag einer double Variable x größer als 50. ist
-ein Punkt mit den Koordinaten (x,y) innerhalb eines Kreises mit dem Mittelpunkt (0,0) und dem Radius 2 liegt?.
-mindestens eine der Variablen x oder y einen positiven Wert (> 0) enthält


ich habe echt keine Ahnung wie ich dazu eine If Abfrage schreiben könnte ich bitte um Hilfe 
vielen Dank an alle


----------



## kiwara (21. Jul 2016)

1.) 

```
if(Math.abs(x) > 50)
```
2.)

```
if(Math.abs(x) <= 2 && Math.abs(y) <= 2)
```
3.)

```
if(x > 0 || y > 0)
```
(wobei 0 mathematisch gesehen positiv ist)


----------



## mrBrown (21. Jul 2016)

kiwara hat gesagt.:


> 2.)



(2,2) liegt also in dem Kreis?


----------



## hos15 (21. Jul 2016)

Vielen vielen Dank für die schnelle Antwort !  
Kann ich anstatt "&&" auch nur "&" schreiben ?
und anstatt "||" auch nur "|" schreiben ?


----------



## Joose (21. Jul 2016)

@kiwara  bei 1. und 3. stimme ich zu
aber 2. ist meiner Meinung nach falsch 



hos15 hat gesagt.:


> Kann ich anstatt "&&" auch nur "&" schreiben ?
> und anstatt "||" auch nur "|" schreiben ?



Weißt du was der unterschied zwischen diesen beiden ist? Wenn nicht lies dir doch die Dokumentation dazu durch.
http://www.java-tutorial.org/relationale-logische-und-bitweise-operatoren.html
Dann sollte dir klarer werden ob man "||" durch "|" ersetzen kann. Wenn dir der Unterschied nicht durch die Doku klar wird dann findet sich vielleicht hier wer der es dir erklären kann.


----------



## hos15 (21. Jul 2016)

Ja also es ist doch so bei "&&" ist es so wenn der 1te ausdruck falsch ist wird der 2te gar nicht beachtet. 
aber bei "&" wenn der erste ausdruck falsch wäre wird trotzdem nochmal der 2te beachtet(überprüft) 
und bei "||" ist es so wenn der erste ausdruck wahr ist wird der 2te nicht überprüft 
und bei "|" werden beide überprüft. 
richtig so ? 
wie soll ich die 2 denn machen wenn die falsch ist ?


----------



## JCODA (21. Jul 2016)

selbst überlegen, pythagoras wäre ein tipp ...


----------



## Joose (21. Jul 2016)

hos15 hat gesagt.:


> richtig so ?


Klingt ned so schlecht. Du könntest auch Code schreiben und es auch einfach testen/ausprobieren ob es sich so verhält


----------



## kiwara (21. Jul 2016)

@all sorry, zu wenig nachgedacht


----------



## hos15 (21. Jul 2016)

ich weiß es leider nicht bitte um hilfe


----------



## Joose (21. Jul 2016)

https://www.google.at/?client=firefox-b#q=java+check+if+point+is+inside+circle&gfe_rd=cr
da sollte sich doch etwas finden lassen  (gleich der 1.link sollte dir schon weiterhelfen)


----------



## hos15 (21. Jul 2016)

nein ich verstehe das nicht steht zu kompliziert da ..


----------



## JCODA (21. Jul 2016)

http://www.java-forum.org/thema/contains-punkt-in-kreis-enthalten.10879/ 
das auch?


----------



## Xyz1 (22. Jul 2016)

Schöne Aufgaben,


hos15 hat gesagt.:


> -der Absolutbetrag einer double Variable x größer als 50. ist
> -ein Punkt mit den Koordinaten (x,y) innerhalb eines Kreises mit dem Mittelpunkt (0,0) und dem Radius 2 liegt?.
> -mindestens eine der Variablen x oder y einen positiven Wert (> 0) enthält



hier ist meine Lösung(en):

```
public static void main(String[] args) throws InterruptedException { // unnoetig
        Random r = new Random();
        JFrame jf = new JFrame("Kreis Frame");
        for (int i = 0; i < 10; i++) {
            final double x = r.nextDouble() * 5 - 2.5, y = r.nextDouble() * 5 - 2.5;
            System.out.println("x = " + x);
            System.out.println("y = " + y);
            // mache was mit jf, was genau, bleibt aber geheim
            if (Math.abs(x) > 50) {
                System.out.println("x > 50");
            }
            if (Math.sqrt(x * x + y * y) < 2) {
                System.out.println("Punkt im Kreis");
            }
            if (x > 0 || y > 0) {
                System.out.println("Eins größer Null");
            }
            System.out.println("");
            Thread.sleep(15000);
        }
    }
```

Punkt NICHT im Kreis:



Punkt im Kreis:



(denke, Kreis-zeichnen ginge besser)

Du solltest Dir Funktion von Operatoren anschauen (nebenbei auch Operanden) und
http://www.mathe-online.at/material...ctors/definition_der_laenge_eines_vektors.htm

Für eine Klausur vielleicht doch etwas viel...

`if (Math.sqrt(x * x + y * y) < 2) {` einfach lernen, ich weiß das so genau, weil ich viel mit Monte Carlo zu tun hab.


----------



## Thallius (22. Jul 2016)

Hm, einen stink normalen Pythagoras ausrechnen ist zu viel verlangt für eine Informatik-Aufgabe? Von welcher Klasse reden wir hier ? Sorry aber das ist absolut unterste Mathematik die man in der 6ten Klasse lernt oder ich zumindest gelernt habe....


----------



## Xyz1 (22. Jul 2016)

Ja, Pi berechnen habt ihr in der 6. Klasse Sekundarstufe I gemacht? Wenn man keine Ahnung hat...


----------



## Thallius (22. Jul 2016)

PI kommt erst deutlich nach dem Pythagors. Wenn man keine Ahnung hat....


----------



## Xyz1 (22. Jul 2016)

Eben, weil Schulmathematik grundauf falsch anfängt. Naja, ich will mich auch nicht streiten, weil diese aufgabe von 9. - 13. Klasse bis 1. Sem. überall gestellt werden könnte. Ich denke, ihr seid sauer, weil ich ihm die Lösung(en) hingeklatscht habe. Allerdings nicht die schöne grafische Visualisierung ebenjener. Genau da scheinst du ja mit deiner Schulmathematik zu scheitern/am Ende zu sein. Hab auch keine lust, hier was "zu veröffentlichen".


----------



## mrBrown (22. Jul 2016)

#drawCircle ist vielleicht für dich eine Meisterleistung auf die du stolz sein kannst, für die meisten hier aber eher trivial und hat vor allem (genau wie pi) keinen Bezug zu der Aufgabe...
Das einzige was du mit deiner Lösung erreichst ist, dem TE weiterhin Nachdenken zu ersparen...


----------



## Xyz1 (22. Jul 2016)

@mrBrown:
1.) #drawCircle gibt es nicht,
2.) wenn schon, dann #drawOval,
3.) Oval ist nix anderes als Circle,
4.) zeichnet man einen Kreis mit Durchmesser z. B. 400, sieht man, dass verbessert werden kann,
5.) du hast gar keine Lösung,
6.) du bist genau wie Thallius außerstande, auch nur irgendetwas davon zu replizieren,
7.) das war's dann auch von meiner Seite, auf irgendwelche oberschlauen Sprüche lasse ich mich nicht ein.


----------



## mrBrown (22. Jul 2016)

DerWissende hat gesagt.:


> 1.) #drawCircle gibt es nicht,
> 2.) wenn schon, dann #drawOval,
> 3.) Oval ist nix anderes als Circle,


Mea culpa, kleiner Flüchtigkeitsfehler...




DerWissende hat gesagt.:


> 4.) zeichnet man einen Kreis mit Durchmesser z. B. 400, sieht man, dass verbessert werden kann,
> 5.) du hast gar keine Lösung,
> 6.) du bist genau wie Thallius außerstande, auch nur irgendetwas davon zu replizieren,
> 7.) das war's dann auch von meiner Seite, auf irgendwelche oberschlauen Sprüche lasse ich mich nicht ein.


Bla bla bla...Sei halt stolz auf deine Lösung, mit viel Glück hat der TE daraus sogar noch irgendwas gelernt, aber fabulier dir hier nicht irgendwelche Dinge zusammen^^


----------



## Xyz1 (22. Jul 2016)

Hätte er etwas das hinschreiben sollen:
https://de.wikipedia.org/wiki/Punkt-in-Polygon-Test_nach_Jordan#Strahl-Methode
Ich hab lediglich "etwas" geholfen, was ja auch das Ziel des Forums sein soll, hab ich mir sagen lassen^^


----------



## mrBrown (22. Jul 2016)

DerWissende hat gesagt.:


> Hätte er etwas das hinschreiben sollen:
> https://de.wikipedia.org/wiki/Punkt-in-Polygon-Test_nach_Jordan#Strahl-Methode


Es war gefragt nach Abstand zweier Punkte, nicht ob irgendein Punkt innerhalb eines Polygons liegt. Und das ist nunmal näher an der 6. als an der 10 Klasse, auch wenn du es zu schwer findest^^



DerWissende hat gesagt.:


> Ich hab lediglich "etwas" geholfen, was ja auch das Ziel des Forums sein soll, hab ich mir sagen lassen^^



Deine Hilfe ist irgendwelchen Code ohne Erklärung hinklatschen. Der TE hat dann zwar irgendeine Lösung, aber trotzdem keine Ahnung. Manchmal ist keine Hilfe besser als solche Hilfe...


----------



## Xyz1 (22. Jul 2016)

Nö, 2 von 3 Bedingungen hatte er ja schon, die 3. fiel ihm nicht ein, eine Erklärung gleich dazu, so viel "kack" wie du schreibst, kann ich mir gar nicht ausdenken^^


----------



## Joose (22. Jul 2016)

Man könnte nun einfach wieder zum Thema kommen und aufhören sich gegenseitig anzustacheln!

Ja das Forum ist dazu da, dass anderen geholfen wird. Ob das nun im Forum von Tipps, Hinweisen, Erklärungen oder Links passiert oder jemand sich die Mühe macht "Komplett"lösungen zu posten ist dabei egal. 
Viele (darunter ich auch) finden aber das es nicht viel bringt solche "Komplett"lösungen zu bringen. Da so teilweise der Lernprozess sowie das Verständnis des Problem und dessen Lösung etwas auf der Strecke bleibt. Darauf kann man nur hinweisen, aber niemanden verbieten "Komplett"lösungen zu bieten.
Man kann natürlich auch auf Probleme/Fehler bei den Lösungsvorschlägen der anderen hinweisen, dies sollte aber nicht ausarten! Niemand weiß jederzeit alles und kleinere Fehler können sich da schon mal einschleichen.
Am Ende entscheidet immer noch der TO welche Lösung für ihn die richtige war bzw. zu sein scheint.

Der Post ist bewusst nicht an eine bestimmte Person gerichtet, da meist mehrere daran beteiligt sind


----------



## Meniskusschaden (22. Jul 2016)

Da der Hinweis auf Pythagoras offenbar nicht gereicht hat, im Anhang noch mal eine Grafik zur Visualisierung.


----------



## Xyz1 (22. Jul 2016)

Mal Frage nebenbei, hattet ihr schon Vektorrechnung?, in welcher Klasse bist du?, kann ebensogut sein, das er an dem Tag krank war, als Satz des Pythagoras in der Schule dran kam. Kann ebensogut sein, dass er im Master-Studiengang Informatik ist, im 8. Sem., und das mal eben visualisieren soll. Etwas in diese Richtung ging meine Erklärung ja auch.


----------



## Meniskusschaden (22. Jul 2016)

Na ja, falls er an dem Tag krank war, hat er als 23-jähriger ja sicher Gelegenheit gehabt, das Versäumte nachzuholen.


----------



## Neumi5694 (23. Jul 2016)

Falls das noch aktuell ist ...
"&&" und "&" sind nur in Einzelfällen austauschbar.
Ersterer Ausdruck ist IMMER für die Verknüpfung von Bool-Werten zu verwenden.
Der zweite Ausdruck ist für die Bit-weise Verknüpfung von Wertigkeiten zu verwenden.

Damit hast du Recht. Warum sollte B auch abgefragt werden, wenn A eh schon falsch ist? Ob B dann true oder false ist, ändert am Ergebnis nichts.
Genauso verhält es sich mit "||" und "|". Wenn in "A || B" A bereits true ist, dann braucht B nicht mehr agefragt zu werden.

Das wird dir in deiner Programmierlaufbahn oft noch begegnen, z.B. wenn die Auswertung eines Objektes nur dann erfolgen soll, wenn es nicht null ist.
Dann schreibst du oft so etwas wie

```
if (component != null && component.isVisible()) {
 //Komponente existiert und ist sichtbar
} else {
 //Komponente existiert entweder gar nicht oder ist unsichtbar
}
```
isVisible() würde im Fall von component == null eine Exception werfen. Hier passiert das aber nicht, da die Methode nur abgefragt wird, falls component eben NICHT null ist.


----------



## JCODA (23. Jul 2016)

Neumi5694 hat gesagt.:


> "&&" und "&" sind nur in Einzelfällen austauschbar.
> Ersterer Ausdruck ist IMMER für die Verknüpfung von Bool-Werten zu verwenden.
> Der zweite Ausdruck ist für die Bit-weise Verknüpfung von Wertigkeiten zu verwenden.


Und wie IMMER sind IMMER-Aussage sehr gewagt. 
Natürlich sollte eine Methode, die solche eine Abfrage macht keine Seiteneffekte besitzen, aber ... Wenn Methoden nun mal Werte verändern und danach ein Boolean zurückgeben und man eben explizit diese beiden Methoden aufrufen will ... Möglicherweise sollte man dann auch ggf. lokale Variablen vor dem logischen und/oder machen, aber ... es kommt IMMER auf den Kontext an.


----------



## joshi1999 (28. Jul 2016)

Für den punkt im kreis wäre vlt. dieses Video ganz hilfreich (Kein Code zu sehen nur um im kopf angestoßen zu werden wie das funktioneiren könnte) :




dein punkt (x/y) wäre in dem beispiel der mittelpunkt des kreises


----------

