Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何制作一种从x';s和o';s_Java_For Loop_Methods - Fatal编程技术网

Java 如何制作一种从x';s和o';s

Java 如何制作一种从x';s和o';s,java,for-loop,methods,Java,For Loop,Methods,我试图创建一个方法,该方法通过用户输入接受一个整数参数,检查它是奇数还是偶数,然后根据它是什么创建一个对应的x和o模式。行和列的数量也等于参数的值 如果参数为奇数,则应输出的图案为十字。如果等于5,则应如下所示: xooox oxoxo ooxoo oxoxo xooox xxxxxx xoooox xoooox xoooox xoooox xxxxxx public class squarePattern { public static void main(String[] arg

我试图创建一个方法,该方法通过用户输入接受一个整数参数,检查它是奇数还是偶数,然后根据它是什么创建一个对应的x和o模式。行和列的数量也等于参数的值

如果参数为奇数,则应输出的图案为十字。如果等于5,则应如下所示:

xooox
oxoxo
ooxoo
oxoxo
xooox
xxxxxx
xoooox
xoooox
xoooox
xoooox
xxxxxx
public class squarePattern {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("Enter a positive integer: ");
        int userInt = scan.nextInt();

        createSquare(userInt);
    }

    public static void createSquare(int intIn) {
        for(int i =0; i < intIn; i++){
            for(int j = 0; j < intIn; j++){
                if(j==2*i || 8-2*i == j)
                    System.out.print("x");
                else
                    System.out.print("o");
            }
            System.out.println();
        }
    }
}
如果参数为偶数,则应输出的模式是一种边框。如果输入为6,则如下所示:

xooox
oxoxo
ooxoo
oxoxo
xooox
xxxxxx
xoooox
xoooox
xoooox
xoooox
xxxxxx
public class squarePattern {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("Enter a positive integer: ");
        int userInt = scan.nextInt();

        createSquare(userInt);
    }

    public static void createSquare(int intIn) {
        for(int i =0; i < intIn; i++){
            for(int j = 0; j < intIn; j++){
                if(j==2*i || 8-2*i == j)
                    System.out.print("x");
                else
                    System.out.print("o");
            }
            System.out.println();
        }
    }
}
我已经尝试了多种方法来做这个奇怪的模式,但不太明白怎么做。我得到的最接近的方法是修改此线程的一个版本:我当前的尝试如下所示:

xooox
oxoxo
ooxoo
oxoxo
xooox
xxxxxx
xoooox
xoooox
xoooox
xoooox
xxxxxx
public class squarePattern {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("Enter a positive integer: ");
        int userInt = scan.nextInt();

        createSquare(userInt);
    }

    public static void createSquare(int intIn) {
        for(int i =0; i < intIn; i++){
            for(int j = 0; j < intIn; j++){
                if(j==2*i || 8-2*i == j)
                    System.out.print("x");
                else
                    System.out.print("o");
            }
            System.out.println();
        }
    }
}
输出:

Enter a positive integer: 4
xxxx
xoox
xoox
xxxx

if
中打印交叉图案的方法的条件很简单:

  • 从左上角到右下角的对角线很小,因为打印“x”的条件只是
    j==i
  • j==4
    j==intIn-1
    时,第一行的另一条对角线必须打印“x”,当
    j==3
    j==intIn-2
    时,第二行必须打印“x”。因此,此条件也取决于当前行
    i
    ,但以降序方式。由此可以推断,第二条对角线的条件是
    j==intIn-i-1
最后的代码是:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("Enter a positive integer: ");
        int userInt = scan.nextInt();

        createSquare(userInt);
    }

    public static void createSquare(int intIn) {
        for(int i =0; i < intIn; i++){
            for(int j = 0; j < intIn; j++){
                if(j == i || j == intIn - i - 1)
                    System.out.print("x");
                else
                    System.out.print("o");
            }
            System.out.println();
        }
    }
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.print(“输入正整数:”);
int userInt=scan.nextInt();
createSquare(userInt);
}
公共静态void createSquare(int intIn){
对于(inti=0;i
您的
if
中关于打印交叉图案的方法的条件很简单:

  • 从左上角到右下角的对角线很小,因为打印“x”的条件只是
    j==i
  • j==4
    j==intIn-1
    时,第一行的另一条对角线必须打印“x”,当
    j==3
    j==intIn-2
    时,第二行必须打印“x”。因此,此条件也取决于当前行
    i
    ,但以降序方式。由此可以推断,第二条对角线的条件是
    j==intIn-i-1
最后的代码是:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);

        System.out.print("Enter a positive integer: ");
        int userInt = scan.nextInt();

        createSquare(userInt);
    }

    public static void createSquare(int intIn) {
        for(int i =0; i < intIn; i++){
            for(int j = 0; j < intIn; j++){
                if(j == i || j == intIn - i - 1)
                    System.out.print("x");
                else
                    System.out.print("o");
            }
            System.out.println();
        }
    }
}
import java.util.Scanner;
公共班机{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.print(“输入正整数:”);
int userInt=scan.nextInt();
createSquare(userInt);
}
公共静态void createSquare(int intIn){
对于(inti=0;i
方形图案相对简单。循环中的一个循环,就像您已经拥有的一样,用于每一行和每一列。如果行是第一行或最后一行,则打印一个X。如果列是第一行或最后一行,则打印一个X。如果两者都不是真的,则打印一个O。交叉模式稍微复杂一些。首先你可以观察到(0,0),(1,1),(2,2)都是x。这个条件本身会给你们一条向下和向右的对角线。那已经到一半了。还有另一个条件会给你另一条线。如果两者都不匹配,则为0。您不需要任何乘法,也不需要任何像8和2这样的幻数。您的边界代码几乎是正确的。您使用了构造
if(…){…};如果(…){…};else{…}
else仅链接到第二个条件。因此,第一个条件和其他条件都可能触发。那会把事情搞砸的。您需要找到一种方法将所有3个条件“链接”在一起,这样,只有当第一个和第二个条件为false时,else才会触发。我不想破坏它,但离你只有几个字符;)啊,你完全正确!忘记使用
else if
而不是
if
。谢谢你帮我弄明白:)正方形的图案比较容易。循环中的一个循环,就像您已经拥有的一样,用于每一行和每一列。如果行是第一行或最后一行,则打印一个X。如果列是第一行或最后一行,则打印一个X。如果两者都不是真的,则打印一个O。交叉模式稍微复杂一些。首先你可以观察到(0,0),(1,1),(2,2)都是x。这个条件本身会给你们一条向下和向右的对角线。那已经到一半了。还有另一个条件会给你另一条线。如果两者都不匹配,则为0。您不需要任何乘法,也不需要任何像8和2这样的幻数。您的边界代码几乎是正确的。您使用了构造
if(…){…};如果(…){…};else{…}
else仅链接到第二个条件。因此,第一个条件和其他条件都可能触发。那会把事情搞砸的。您需要找到一种方法将所有3个条件“链接”在一起,这样,只有当第一个和第二个条件为false时,else才会触发。我不想破坏它,但离你只有几个字符;)啊,你完全正确!忘记使用
else if
而不是
if
。谢谢你帮我弄明白:)