这篇文章带大家用循环来实现 多组输入打印一个 'X' 图形,希望能对你有所帮助!
(题目来源:牛客网 X形图案)
首先,让我们来看一下题目要求:
要求如下:
1、需要用循环来实现图案的打印
2、多组输入,数值在2到20之间
3、输入的数表示图案 'X' 正斜线和反斜线的长度
我们尝试用二维数组的形式来实现图案的打印。
我们看到,如果我们要打印一个正反斜线长度都为3的’X'图案,正斜线上的坐标x、y都相同;反斜线上的坐标y递增,x递减。
我们先将数组元素都初始化为空格,然后再将指定位置上的空格替换为 ' * ',最后再将数组打印出来,就可以实现我们的需求了~
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
int X = scan.nextInt();
int i = 0;
int j = 0;
char[][] str = new char[X][X];
for(i = 0;i < X;i++) {
for(j = 0;j < X;j++) {
str[i][j]=' ';
}
}
for(i = 0;i < X;i++) {
str[i][i]='*';
str[X-1-i][i]='*';
}
for(i = 0;i < X;i++) {
for(j = 0;j < X;j++) {
System.out.print(str[i][j]);
}
System.out.println();
}
}
}
运行结果如下:
但并没有实现题目所要求的多组输入,所以我们需要再加一个输入的循环,在输入数据为空前都能运行程序,打印对应的图案:
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
//重点在这里!!!
while(scan.hasNextInt()) {
int X = scan.nextInt();
int i = 0;
int j = 0;
char[][] str = new char[X][X];
for(i = 0;i < X;i++) {
for(j = 0;j < X;j++) {
str[i][j]=' ';
}
}
for(i = 0;i < X;i++) {
str[i][i]='*';
str[X-1-i][i]='*';
}
for(i = 0;i < X;i++) {
for(j = 0;j < X;j++) {
System.out.print(str[i][j]);
}
System.out.println();
}
}
}
}
}
接下来我们再运行一下程序看看结果:
通过结果可以看出,我们实现了题目要求的所有功能!
以上就是 JavaSE基础:用多组输入打印 'X' 图形 的全部内容啦~希望能对你有所帮助!有问题欢迎评论区一起讨论交流,你的点赞收藏是对我最大的支持!