none
判斷式的問題 RRS feed

  • 問題

  • 請教各位高手,關於判斷式的基本問題。

    以下是我的程式,不懂的地方在於為什麼第一段程式的判斷式加上 && 就無法show出圖來,而第二段程式不加Round卻可以。

    但是Round的判斷又是不能缺少的...

    //////第一段//////

                    if (Count == 5 && Round == 1)               
                    {
                        this.BackgroundImage = Fourier_R1[T];
                        //Output(8224,1)                 
                    }

    //////第二段//////

    if (Count == 5 )               
                    {
                        this.BackgroundImage = Fourier_R1[T];
                        //Output(8224,1)                 
                    }

    2012年8月14日 上午 01:09

解答

  • 您好,您可以Debug一下,設定中斷點,然後在監看視窗中去看一下Count, Round的值,並(Count == 5 && Round == 1) 的結果。

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 VincentKYH 2012年8月14日 上午 06:13
    2012年8月14日 上午 02:38
  • 您好,每一次Timer Run進去的話Count及Round就會一直加上1,for (int T = 0; T <= 25; T++)中沒有改變 Count及Round 的值。

    所以在for (int T = 0; T <= 25; T++) 中 Count 及 Round的值會是一樣的

    , 所以 Count == 5 && Round == 1 一定是false。

    因為Count 為5時,Round的值也一定是5。


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 VincentKYH 2012年8月14日 上午 06:14
    2012年8月14日 上午 04:43

所有回覆

  • 請檢查第一段的Round在程式執行中是否等於1。

    請參考 && 運算子。

    http://msdn.microsoft.com/zh-tw/library/2a723cdk(v=vs.100).aspx


    以上說明若有錯誤請指教,謝謝。
    http://www.dotblogs.com.tw/terrychuang/

    2012年8月14日 上午 01:38
  • 您好,您可以Debug一下,設定中斷點,然後在監看視窗中去看一下Count, Round的值,並(Count == 5 && Round == 1) 的結果。

    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 VincentKYH 2012年8月14日 上午 06:13
    2012年8月14日 上午 02:38
  • 由於我的Round一開始就int Round == 1

    我刪除Round==1會show圖而且確實是在Count == 5的時候Show出來,

    而刪除Count == 5的時候也確實是在Round == 1的時候show出來。

    所以我才對兩者共存感到疑惑,畢竟Round 一開始我就給值是1了

    以下是程式麻煩幫我看看,謝謝。

    private void timer1_Tick(object sender, EventArgs e)
            {
                Count = Count + 1;

                for (int T = 0; T <= 25; T++)
                {
                    if (Count == 1 || Count == 12)
                    {
                        this.BackgroundImage = Cue[0];
                        //()
                    }

    if (Count == 5 && Round == 1)               // Fourier Picture
                    {
                        this.BackgroundImage = Fourier_R1[T];
                        //Output(8224,1)                 
                    }
                    else if (Count == 5 && Round == 2)               
                    {
                        this.BackgroundImage = Fourier_R2[T];
                        //Output(8224,1)                 
                    }               

    else if (Count == 23)
                    {
                        timer1.Stop();
                        this.WindowState = FormWindowState.Minimized;
                        Count = 0;
                        Form2 f2 = new Form2();
                        f2.Show();
                        return;
                    }
                }
                Round = Round + 1;

            }


    • 已編輯 VincentKYH 2012年8月14日 上午 04:08
    2012年8月14日 上午 04:07
  • 不好意思if 和 else if有突出來,那兩行也是在迴圈內的。

    2012年8月14日 上午 04:09
  • 抱歉,開頭沒複製到。

     int Round = 1;
            int Count = 0;

            private void timer1_Tick(object sender, EventArgs e)
            {
    2012年8月14日 上午 04:13
  • 您好,每一次Timer Run進去的話Count及Round就會一直加上1,for (int T = 0; T <= 25; T++)中沒有改變 Count及Round 的值。

    所以在for (int T = 0; T <= 25; T++) 中 Count 及 Round的值會是一樣的

    , 所以 Count == 5 && Round == 1 一定是false。

    因為Count 為5時,Round的值也一定是5。


    以上說明若有錯誤請指教,謝謝。
    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    • 已標示為解答 VincentKYH 2012年8月14日 上午 06:14
    2012年8月14日 上午 04:43
  • 啊!

    我知道了,謝謝!
    2012年8月14日 上午 06:15