2016-03-25 4 views
0

Ich versuche, es so zu machen, dass Code x (Quadrierung x jedes Mal) ausgibt, bis es Nummer erreicht, die die aktuelle Zeit (in Millisekunden) in eine einzelne Ziffer unterteilt. Es hat keine Fehler, aber es hat auch keine Ausgabe. Wie kann ich es x ausdrucken lassen?Drucken nicht x in for Schleife

public class Experiment { 

    public static void main(String[] args){ 

     long start = System.currentTimeMillis(); 

     for(long x = 2; System.currentTimeMillis()/x <= 9; x=x*2){ 
      System.out.println(x); 
     } 
    } 
} 
+0

ändern Was bedeutet *, bis es Zahl erreicht, die die aktuelle Zeit (in Millisekunden) in eine einzelne Ziffer teilt * **bedeuten**? 'System.currentTimeMillis()' gibt eine Anzahl von Millisekunden seit dem 1. Januar 1970 um Mitternacht UTC zurück. –

Antwort

6

Ihr Fehler ist System.currentTimeMillis()/x <= 9 statt System.currentTimeMillis()/x > 9 schriftlich anzuzeigen.

Ihre Schleife wird nicht einmal ausgeführt, da sie System.currentTimeMillis()/x <= 9 nicht erfüllen kann.

Seitliche Anmerkung: Denken Sie daran, dass System.currentTimeMillis()/x nicht immer eine ganze Zahl ist. Wenn mit "einzelne Ziffer" meinten Sie "weniger als 10" (z. B. 9,563), sollten Sie stattdessen System.currentTimeMillis()/x >= 10 schreiben. Ich bezweifle jedoch, dass Division zwischen zwei long eine Dezimalzahl erzeugen würde.

0

Aus Ihrer Beschreibung

public class Experiment { 
    public static void main(String[] args){ 
    final long start = System.currentTimeMillis()/10; 
    for(long x = 2; x <= start; x*=2){ 
     System.out.println(x); 
    } 
    } 
} 

war ich nicht sicher „Zahl, die die aktuelle Zeit teilt (in Millisekunden) in eine einzige Ziffer“, aber Sie sollten auch weiterhin die Lage sein.

0

Ein einfacher Debugger laufen würde zeigen, dass Sie einen Wert zu vergleichen versuchen: 729.466.267.577 gegen 9 und hoffen, dass es weniger als 9.

Ich denke, sein es keine Notwendigkeit, Ihnen zu sagen, wie diese lösen . Aber was SO Ihnen sagen wird, ist Start mit einer Art von Debugger

0

Die Schleife läuft nicht! Versuchen Sie mit System.currentTimeMillis()/x> = 9, es sollte funktionieren. Ich habe versucht, es auf Eclipse und er druckt:

2 
4 
8 
16 
32 
64 
128 
256 
512 
1024 
2048 
4096 
8192 
16384 
32768 
65536 
131072 
262144 
524288 
1048576 
2097152 
4194304 
8388608 
16777216 
33554432 
67108864 
134217728 
268435456 
536870912 
1073741824 
2147483648 
4294967296 
8589934592 
17179869184 
34359738368 
68719476736 
137438953472 
0

Ihre Schleife vor der ersten Iteration endet wird.

Die bedingte Anweisung in Ihrer Schleife muss ursprünglich erfüllt sein, damit die Schleife iteriert werden kann.

Da die aktuelle Zeit/x in der ersten Iteration nicht kleiner als 9 ist, wird die Schleife sofort beendet.

Ich glaube, wenn Sie

System.currentTimeMillis()/x <= 9 

Um

System.currentTimeMillis()/x > 9 

Diese Arbeit sollte