• 41 394 online
  • 1 134 974 medlemmar
  • 58 837 768 inlägg
2017-11-15, 07:49
  #1
Medlem
Yung-Hydras avatar
Kod:
public class primeme { 
    public static void main(String args[]) { 
        for (int tal = 0; tal <= 100; tal++) {
            for (int i = 2; i < tal; i++) {
                if ((tal % i) == 0) {
                    // System.out.println(tal + " är inte ett primtal");
                    break;
                } else {
                    System.out.println(tal + " är ett primtal");
                    break;
                }
            }
        }
    }
}
I eclipse står det att "i++" i den andra for loopen är dead code och värdet stannar på 2 och ökar inte, hur löser jag detta? Tack!
__________________
Senast redigerad av Yung-Hydra 2017-11-15 kl. 07:54.
Citera
2017-11-15, 07:58
  #2
Medlem
kimdah2002s avatar
Citat:
Ursprungligen postat av Yung-Hydra
Kod:
public class primeme { 
    public static void main(String args[]) { 
        for (int tal = 0; tal <= 100; tal++) {
            for (int i = 2; i < tal; i++) {
                if ((tal % i) == 0) {
                    // System.out.println(tal + " är inte ett primtal");
                    break;
                } else {
                    System.out.println(tal + " är ett primtal");
                    break;
                }
            }
        }
    }
}
I eclipse står det att "i++" i den andra for loopen är dead code och värdet stannar på 2 och ökar inte, hur löser jag detta? Tack!
i ökar inte med ++ eftersom första kontrollen är om i(2) < tal(0) vilket det inte är så resten är dead code
Citera
2017-11-15, 07:59
  #3
Medlem
I första iterationen i första loopen är tal = 0. När den sedan går in i den andra är i = 2, i < tal.
Dvs, tal är mindre än "i" i dom tre första iterationerna i andra loopen.

Kan det vara något?
Citera
2017-11-15, 08:51
  #4
Medlem
kodsnickrarns avatar
Du har ju en break i både if och else satsen i den den inre loopen, det gör att den kommer
sätta i till 2, göra första kollen mot "tal % i ==0" och därefter bryta iterationen och köra nästa iteration i den yttre loopen.

/K
Citera