Java 打印带有嵌套循环的棋盘格。[爪哇]
我在打印代码时遇到问题。我需要打印一个棋盘格和一个用户输入大小的网格 它应该输出什么的示例Java 打印带有嵌套循环的棋盘格。[爪哇],java,nested-loops,Java,Nested Loops,我在打印代码时遇到问题。我需要打印一个棋盘格和一个用户输入大小的网格 它应该输出什么的示例 Input a size (must be larger than 1): 5 0 * * * 1 * * 2 * * * 3 * * 4 * * * 这是我的密码: import java.util.Scanner; public class nestedpractice1 { public static void main(String[]
Input a size (must be larger than 1):
5
0 * * *
1 * *
2 * * *
3 * *
4 * * *
这是我的密码:
import java.util.Scanner;
public class nestedpractice1
{
public static void main(String[] args)
{
Scanner kbinput = new Scanner(System.in);
//Create Size variable
System.out.println("Input a size: ");
int n = 0; n = kbinput.nextInt();
for(int r = 0; r < n; r++)
{
for(int c = 0; c < r; c++)
{
if((r%2) == 0)
{
System.out.print("*");
}
else if((r%1) == 0)
{
System.out.print(" *");
}
}
System.out.println("");
kbinput.close();
}
}
}
通过查看您的代码,我发现了以下潜在问题:
kbinput.close()不应在循环内调用代码>
应该是else if((r%1)==0)
,尽管在这种情况下,简单的else if(r%2!=0)
就足够了else
- 在
中,您可能需要执行else
System.out.print(“”)代码>
而不是系统输出打印(“*”)代码>
- 我相信
应该循环,只要for(intc=0;c
c
for (int r = 0; r < n; r++) {
System.out.print(r);
for (int c = 0; c < n; c++) {
System.out.print(r % 2 == 1 ^ c % 2 == 0 ? " *" : " ");
}
System.out.println();
}
作为解释,我们只想在行和列都是偶数或都是奇数时打印*
。因此,如果行是偶数但列是奇数,或者行是奇数但列是偶数,我们只打印空格
我们可以使用==
而不是^
来表达相同的逻辑,方法是:
boolean isEvenRow = r % 2 == 0;
boolean isEvenCol = c % 2 == 0;
System.out.print(isEvenRow == isEvenCol ? " *" : " ");
或者,如果您更喜欢使用正手if..else
而不是速记三元运算符:
if (isEvenRow == isEvenCol) {
System.out.print(" *");
} else {
System.out.print(" ");
}
将来:请添加一个描述,说明您遇到了什么错误,或者您的程序的当前输出是什么,以及您希望得到什么。请解释您的输出应该是什么样子,以及为什么您认为您的代码应该产生预期的结果。我已经做了一些编辑,以帮助解决我的问题。我对此不熟悉,因此如果我y post是模糊的。我仍在努力学习如何正确地形成一个编码问题。谢谢。我在这方面遇到了很多麻烦。我将不得不学习更多关于这个(xor)运算符和(三元)运算符的知识。我认为它们在未来将非常方便。
boolean isEvenRow = r % 2 == 0;
boolean isEvenCol = c % 2 == 0;
System.out.print(isEvenRow == isEvenCol ? " *" : " ");
if (isEvenRow == isEvenCol) {
System.out.print(" *");
} else {
System.out.print(" ");
}