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("  ");
            }