0
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
OX
XO
OX

しかし、代わりに印刷します

〇〇〇〇〇
_
_
_

それはおそらく本当に明白な解決策ですが、私はこれに慣れていないため(明らかに)、何が間違っていたのかわかりません。

ちなみにJavaです。

4

4 に答える 4

0

問題は、%が優先されること+です。したがって、コードは最終的に次のようになります。

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");
        }
    }
}
于 2013-09-24T04:03:33.830 に答える
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");
            }
        }
    }
}
于 2013-09-24T03:56:15.280 に答える