Kezdőoldal » Számítástechnika » Programozás » Miért nem hajtja végre a if...

Miért nem hajtja végre a if (van = false) utasításban lévő parancsot? Amikor nem talál 10-el osztható számot? Debug-oltam, eléri azt a sort, de nem lép be, hiába false az érték.

Figyelt kérdés

import java.util.Scanner;


/**

* Created by Norbi on 2014.10.07..

*/

public class Kaczur6513 {

public static void main(String[] args) {

int a, b;

boolean van;

Scanner be = new Scanner(System.in);

System.out.println("Kérem az alsó értéket: ");

a = be.nextInt();

System.out.println("Kérem a felső értéket: ");

b = be.nextInt();

if (a <= b) {

for (int i = a; i <= b; i++)

if (i % 10 == 0) {

System.out.println("A megadott intervallum első 10-el osztható száma: " + i);

van = true;

break;

}

if (van = false) {

System.out.println("Nincs 10-el osztható szám az intervallumban");

}

}

else {

System.out.println("Nem jó az intervallum");

}

}

}



2014. okt. 7. 15:23
 1/6 anonim ***** válasza:
Mert az = jel az értékadás jele, a == pedig az egyenlőségvizsgálaté. Az utóbbit kéne használnod vagy egyszerűen: if(!van)
2014. okt. 7. 15:29
Hasznos számodra ez a válasz?
 2/6 anonim ***** válasza:

Egyébként részletezve a jelenséget:

if (van = false) {...}


Tök mindegy, mi a van változó értéke, beállítja false-ra, és visszaadja azt. Tehát a "van = false" értéke mindig false. Ezért az "if-be" sosem lép be.

2014. okt. 7. 15:30
Hasznos számodra ez a válasz?
 3/6 A kérdező kommentje:

Ezt a hibaüzenetet kapom if (!van)-nál:

Error:(22, 15) java: variable van might not have been initialized.

2014. okt. 7. 15:47
 4/6 A kérdező kommentje:

Felcseréltem a boolean-t, így elfogadja az if után, de nem értem miért, mi a különbség.

Ezt el tudnád magyarázni miben lett más így? Miért nincs az előbbi hibaüzenet?


import java.util.Scanner;


/**

* Created by Norbi on 2014.10.07..

*/

public class Kaczur6513 {

public static void main(String[] args) {

int a, b;

boolean nemtalal = true;

Scanner be = new Scanner(System.in);

System.out.println("Kérem az alsó értéket: ");

a = be.nextInt();

System.out.println("Kérem a felső értéket: ");

b = be.nextInt();

if (a <= b) {

for (int i = a; i <= b; i++)

if (i % 10 == 0) {

System.out.println("A megadott intervallum első 10-el osztható száma: " + i);

nemtalal = false;

break;

}

if (nemtalal) {

System.out.println("Nincs 10-el osztható szám az intervallumban");

}

}

else {

System.out.println("Nem jó az intervallum");

}

}

}

2014. okt. 7. 15:56
 5/6 anonim ***** válasza:

Ez meg egy újabb probléma:

A van változód nem kap mindig értéket: true lesz, ha talál 10-zel oszthatót, de SOSEM LESZ false!


Megoldás, így deklaráld:

boolean van = false;

2014. okt. 7. 15:57
Hasznos számodra ez a válasz?
 6/6 anonim ***** válasza:
Abban más, hogy egyrészt felcserélted a jelentését, másrészt itt már adtál neki kezdeti értéket.
2014. okt. 7. 15:58
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!