Wątek przeniesiony 2014-10-22 19:58 z Java przez bogdans.

Prosty program z operatorem warunkowym

0

Hej, jestem mega początkującym petentem do bycia programistą Javy. Mam problem z "Operatorem warunkowym ( ? : )". Mianowicie mam do wykonania poniższe zadania:

  1. Dana jest zmienna typu boolean czyPada zainicjowana wartością true. Napisz program sprawdzający stan tej zmiennej za pomocą operatora ? : wyświetlającego komunikaty: a) Nie pada, b) Pada
  2. (W tym zadaniu nie oczekuję gotowego kodu a może jakiejś podpowiedzi, zamierzam najpierw sam dłużej je porozkminiać) Korzystając tylko z operatora ? : dokonaj optymalnej i jednoznacznej klasyfikacji zmiennej int wrt do zbiorów: A=[0,nieskończoność] ; B=[1,-nieskończoność] ; C=[0,1].

Pierwsze zadanie rozwiązałem ale innym sposobem za pomocą instrukcji if else. Oto kod:

boolean czyPada=false;

//Pada - True
//Nie Pada - False

if(czyPada)
	System.out.println("Pada");
else
	System.out.println("Nie pada");

Bardzo proszę o pomoc, oglądałem tutoriale dot. tych operatorów i przeglądałem inne publikacje ale za nic nie mogę tego napisać tak żeby nie robić błędów...

Oto moje dotychczasowa próba, niestety zwieńczona masą błędów:

boolean czyPada1=true;

//Pada - True
//Nie Pada - False

czyPada1 =(true) ? "Pada":"Nie_pada";
"Pada"=true;
"Nie_pada"=false;
1

Pierwsze:

System.out.println(czyPada?"Pada":"Nie pada");

Wstawiaj kod w znaczniki < code=java >< /code > (bez spacji!).

0

Założyłem już konto. Dziękuję bardzo za tak szybką odpowiedź, oczywiście zwrócę uwagę na poprawne wstawianie kodu. Nie sądziłem, że odpowiedz będzie tak prosta... Tylko jak jeszcze ująć w tym boolean ?

1

Nie rozumiem pytania. Chodzi Ci o to?

boolean czyPada = true;
System.out.println(czyPada?"Pada":"Nie pada");
0

Tak, o to chodziło. Dziękuję za pomoc !

0

Odnośnie drugiego/poniższego zadania:

Korzystając tylko z operatora ? : dokonaj optymalnej i jednoznacznej klasyfikacji zmiennej int wrt do zbiorów: A=[0,nieskończoność] ; B=[1,-nieskończoność] ; C=[0,1].

Napisałem coś takiego:

int wrt=1;

System.out.println(wrt=1&&wrt=0?"Nalezy do A, B i C":wrt<1&&wrt>0?"Nalezy do C":wrt>Double.NEGATIVE_INFINITY&&wrt<1?"Nalezy do B":"Nalezy do A");

Problem występuje z warunkiem "wrt=1&&wrt=0" na samym początku.
W wierszu poleceń wyskakują następujące błędy odnoszące się do ww warunku:

  1. bad operand types for binary operator '&&'
  2. incompatible types: int cannot be convereted to boolean

Metodą prób i błędów ustaliłem, że zamieniając "=" na "< lub >" program poprawnie kompiluje ale warunek jaki chcę postawić traci sens.

Czy da się jakoś inaczej napisać ten warunek, tak aby nie występowały te błędy ?

1

= to jest przypisanie, a nie porównanie (==).

0

Problem rozwiązany, dziękuję za ekspresową pomoc ! Można zamknąć temat.

0

Nawiasem mówiąc, Twój warunek wygląda słabo. Powinieneś mieć dwa wyrażenie warunkowe zagnieżdżone.

System.out.println(wrt > 1 ? "A, bo > 1" : wrt < 0 ? "B, bo < 0" : "C, bo <0,1>");

dodanie znacznika <code class="java"> - @furious programming

0

Doskonale rozumiem o co chodzi. Ale w treści zadania jest mowa o zmiennej typu INT wiec mogę pod WRT wstawić tylko 1 lub 0, a dla tych wartości się zgadza.

1 użytkowników online, w tym zalogowanych: 0, gości: 1