Java 如何制作一种从x';s和o';s
我试图创建一个方法,该方法通过用户输入接受一个整数参数,检查它是奇数还是偶数,然后根据它是什么创建一个对应的x和o模式。行和列的数量也等于参数的值 如果参数为奇数,则应输出的图案为十字。如果等于5,则应如下所示: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
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
时,第一行的另一条对角线必须打印“x”,当j==intIn-1
或j==3
时,第二行必须打印“x”。因此,此条件也取决于当前行j==intIn-2
,但以降序方式。由此可以推断,第二条对角线的条件是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
时,第一行的另一条对角线必须打印“x”,当j==intIn-1
或j==3
时,第二行必须打印“x”。因此,此条件也取决于当前行j==intIn-2
,但以降序方式。由此可以推断,第二条对角线的条件是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
。谢谢你帮我弄明白:)