[英]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.