簡體   English   中英

為什么我的代碼只輸出“ O”?

[英]Why is my code only outputting “O”?

public class checkerBoard
{
    public static void main(String[] args)
    {

        int m = 6; //m is rows
        int n = 2; //n is columns

        char o = 'O';
        char x = 'X';

        for (int r = 1; r <= m; r++)
        {
            for (int c = 1; c <= n; c++)
            {
                if (c+r % 2 == 0)               
                    System.out.print(x);

                else
                    System.out.print(o);

                if (c == n)
                    System.out.print("\n");
            }
        }
    }
}

應該是印刷

XO

XO

但相反,它打印

面向對象
面向對象
面向對象
面向對象

這可能是一個非常明顯的解決方案,但我對此很新(顯然),無法弄清楚我做錯了什么。

順便說一下,這是Java。

嘗試將c+r % 2更改為(c+r) % 2

%優先於+

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/operators.html

嘗試將if (c+r % 2 == 0)更改為if((c+r) % 2 == 0)

將c + r括在圓括號內,因為%運算符的優先級高於+運算符,這會導致在求和之前執行模數並導致錯誤。

public class checkerBoard
{
    public static void main(String[] args)
    {

        int m = 6; //m is rows
        int n = 2; //n is columns

        char o = 'O';
        char x = 'X';

        for (int r = 1; r <= m; r++)
        {
            for (int c = 1; c <= n; c++)
            {
                if ((c+r) % 2 == 0)               
                    System.out.print(x);

                else
                    System.out.print(o);

                if (c == n)
                    System.out.print("\n");
            }
        }
    }
}

問題是%優先於+ 因此,您的代碼最終必須看起來像這樣:

public class checkerBoard { 
    public static void main(String[] args)  {

        int m = 6; //m is rows
        int n = 2; //n is columns

        char o = 'O';
        char x = 'X';

        for (int r = 1; r <= m; r++) {
            for (int c = 1; c <= n; c++) {
                if ((c+r) % 2 == 0){ //% takes precedence over +                
                    System.out.print(x);
                } else {
                    System.out.print(o);
                }
            }

            System.out.print("\n");
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM