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.
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");
}
}
}
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.
Ezt a hibaüzenetet kapom if (!van)-nál:
Error:(22, 15) java: variable van might not have been initialized.
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");
}
}
}
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;
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!