如何在用户给定长度和宽度的 Java 中创建 X 模式?
How to create an X pattern in Java given length and width from user?
尝试编写一个程序,根据用户输入的宽度和长度生成一种 X/spiral 模式。长度是屏幕上有多少个字符,宽度是多少个字符高。
我无法找出数学关系来实现我想要的模式。
下面是正确的示例输出:
输入您想要的长度:39
输入您想要的宽度:7
这是我目前的代码及其生成的内容:
import java.util.Scanner;
public class Twisty {
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.print("Input your desired length: ");
int length = myScanner.nextInt();
System.out.print("Input your desired width: ");
int width = myScanner.nextInt();
for(int i=0; i<width; i++) {
for(int j=0; j<length; j++) {
if(i==j || (i+j)%width==width-1 || (i+j)%width==0) {
System.out.print("#");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
输入您想要的长度:39
输入您想要的宽度:7
我究竟做错了什么?感谢您的帮助。
专注于一个X开始。您应该只需要检查 2 个案例。一个绘制 X 的一部分,另一个绘制另一侧。我基本上是从你的代码中抓取这个并删除了你的 if 语句中的第三个条件。
//System.out.print("Input your desired length: ");
int length = 7;
//System.out.print("Input your desired width: ");
int width = 7;
for(int i=0; i<width; i++){
for(int j=0; j<length; j++){
if(i==j || (i+j)%width==width-1){
System.out.print("#");
}else{
System.out.print(" ");
}
}System.out.println();
}
在您解决了该行为并可以绘制一个 X 之后,您只需要 mod 与宽度水平的位置。用宽度修改你的长度位置几乎就像你正在绘制一个全新的 X。你不关心你相对于整个图片的水平位置,而是关心你相对于你正在绘制的当前 X 的位置.你可以这样做:
//System.out.print("Input your desired length: ");
int length = 39;
//System.out.print("Input your desired width: ");
int width = 7;
for(int i=0; i<width; i++){
for(int j=0; j<length; j++){
if(i==j%width || (i+j%width)%width==width-1){
System.out.print("#");
}else{
System.out.print(" ");
}
}System.out.println();
}
希望这对您有所帮助。
尝试编写一个程序,根据用户输入的宽度和长度生成一种 X/spiral 模式。长度是屏幕上有多少个字符,宽度是多少个字符高。 我无法找出数学关系来实现我想要的模式。
下面是正确的示例输出:
输入您想要的长度:39
输入您想要的宽度:7
这是我目前的代码及其生成的内容:
import java.util.Scanner;
public class Twisty {
public static void main(String[] args){
Scanner myScanner = new Scanner(System.in);
System.out.print("Input your desired length: ");
int length = myScanner.nextInt();
System.out.print("Input your desired width: ");
int width = myScanner.nextInt();
for(int i=0; i<width; i++) {
for(int j=0; j<length; j++) {
if(i==j || (i+j)%width==width-1 || (i+j)%width==0) {
System.out.print("#");
} else {
System.out.print(" ");
}
}
System.out.println();
}
}
}
输入您想要的长度:39
输入您想要的宽度:7
我究竟做错了什么?感谢您的帮助。
专注于一个X开始。您应该只需要检查 2 个案例。一个绘制 X 的一部分,另一个绘制另一侧。我基本上是从你的代码中抓取这个并删除了你的 if 语句中的第三个条件。
//System.out.print("Input your desired length: ");
int length = 7;
//System.out.print("Input your desired width: ");
int width = 7;
for(int i=0; i<width; i++){
for(int j=0; j<length; j++){
if(i==j || (i+j)%width==width-1){
System.out.print("#");
}else{
System.out.print(" ");
}
}System.out.println();
}
在您解决了该行为并可以绘制一个 X 之后,您只需要 mod 与宽度水平的位置。用宽度修改你的长度位置几乎就像你正在绘制一个全新的 X。你不关心你相对于整个图片的水平位置,而是关心你相对于你正在绘制的当前 X 的位置.你可以这样做:
//System.out.print("Input your desired length: ");
int length = 39;
//System.out.print("Input your desired width: ");
int width = 7;
for(int i=0; i<width; i++){
for(int j=0; j<length; j++){
if(i==j%width || (i+j%width)%width==width-1){
System.out.print("#");
}else{
System.out.print(" ");
}
}System.out.println();
}
希望这对您有所帮助。