2015-09-26 108 views
-1

我想在控制檯輸出一個從00h00m00s到23h59m59s的定時器。 我的代碼只輸出00h00m59s。 必須是以後的條件,但我認爲是正確的。 誰知道如何解決這個問題?多個條件

static void Main(string[] args) 
    { 
     int uur = 0; 
     int min = 0; 
     int sec = 0; 

     while (uur != 23 && min!=60 && sec!=60) 
     { 
      if (sec == 60) 
      { 
       min++; 
       sec = 0; 
      } 
      if (min == 60) 
      { 
       uur++; 
       min = 0; 
      } 

      string strSec = String.Format("{0:00}", sec); 
      string strMin = String.Format("{0:00}", min); 
      string strUur = String.Format("{0:00}", uur); 

      Console.WriteLine(strUur + "h" + strMin + "m" + strSec + "s"); 
      sec++; 
     } 
     Console.ReadLine(); 
    } 
+6

sec = 60時,會發生什麼情況? – Ian

+0

它必須停止。直到打印23h59m59s。 – eldje

+5

第一條評論是一條提示。 – venerik

回答

2

使用以下條件:

while (uur != 23 || min != 59 || sec != 60) 

你可能也想試試這個簡單的方法:

int total_second_in_day = 24*60*60; 

for (int second_in_day = 0; second_in_day < total_second_in_day; second_in_day++) 
{ 
    int uur = second_in_day/3600; 
    int min = (second_in_day % 3600)/60; 
    int sec = (second_in_day % 3600) % 60; 

    string strSec = String.Format("{0:00}", sec); 
    string strMin = String.Format("{0:00}", min); 
    string strUur = String.Format("{0:00}", uur); 

    Console.WriteLine(strUur + "h" + strMin + "m" + strSec + "s"); 
} 

Console.ReadLine(); 
2

雖然你的問題基本上是關於理解while條件下,這是你怎麼可能實現所有時間打印:

using System; 

public class Program 
{ 
    public static void Main() 
    { 
     var time = new TimeSpan(0,0,0,0); 
     var oneSec = new TimeSpan(0,0,0,1); 
     var wakeywakey = new TimeSpan(0,23,59,59); 

     while (time <= wakeywakey) 
     { 
      Console.WriteLine(time); 
      time += oneSec; 
     } 
    } 
} 
+0

wakywaky ...? :O – Kritner

+1

您應該更改條件爲'while(time <= wakywaky)' –

+0

更好地使用TimeSpan靜態工廠方法(TimeSpan.FromSeconds,FromDays)而不是醜陋的構造函數。他們使代碼更具可讀性。 –