錯誤代碼展示:
import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;
public class Main3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
while (n-- > 0) {
int hang = sc.nextInt();
int ge = sc.nextInt();
char[][] chars = new char[hang][hang];
int k = hang / 2 + 1;
chars[k - 1][k - 1] = 'X';
for (int i = k - 2; i >= 0; i--) {
for (int j = 0; j < chars[0].length; j++) {
if (j < hang / 2) {
if (chars[i + 1][j + 1] == 'X') {
chars[i][j] = 'X';
} else {
chars[i][j] = ' ';
}
} else if (j > hang / 2) {
if (chars[i + 1][j - 1] == 'X') {
chars[i][j] = 'X';
} else {
chars[i][j] = ' ';
}
}
}
}
for (int i = k; i < chars.length; i++) {
for (int j = 0; j < chars[0].length; j++) {
if (j < hang / 2) {
if (chars[i - 1][j + 1] == 'X') {
chars[i][j] = 'X';
} else {
chars[i][j] = ' ';
}
} else if (j > hang / 2) {
if (chars[i - 1][j - 1] == 'X') {
chars[i][j] = 'X';
} else {
chars[i][j] = ' ';
}
}
}
}
int kk = 0;
int jj = 0;
for (int i = 0; i < ge; i++) {
if (i == 0) {
kk = 0;
} else {
kk = 1;
}
for (int j = kk; j < chars.length; j++) {
for (int j2 = 0; j2 < chars[0].length; j2++) {
if (j == hang / 2) {
if (chars[j][j2] == 'X') {
System.out.print(chars[j][j2]);
break;
} else {
System.out.print(chars[j][j2]);
}
} else {
if (chars[j][j2] == 'X') {
jj++;
}
System.out.print(chars[j][j2]);
if (jj == 2) {
break;
}
}
}
jj = 0;
System.out.println();
}
}
if(n!=0) {
System.out.println();
}
}
}
}
錯誤分析:
此題採用的是char型的二維數組打印圖形,在此要記住,用char型數組打印圖形一定要先初始化!!!
原因:
正確代碼展示:
import java.util.List;
import java.util.ArrayList;
import java.util.Scanner;
public class Main3 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
while (n-- > 0) {
int hang = sc.nextInt();
int ge = sc.nextInt();
char[][] chars = new char[hang][hang];
for (int i = 0; i < chars.length; i++) {
for (int j = 0; j < chars[0].length; j++) {
chars[i][j]=' ';
}
}
int k = hang / 2 + 1;
chars[k - 1][k - 1] = 'X';
for (int i = k - 2; i >= 0; i--) {
for (int j = 0; j < chars[0].length; j++) {
if (j < hang / 2) {
if (chars[i + 1][j + 1] == 'X') {
chars[i][j] = 'X';
} else {
chars[i][j] = ' ';
}
} else if (j > hang / 2) {
if (chars[i + 1][j - 1] == 'X') {
chars[i][j] = 'X';
} else {
chars[i][j] = ' ';
}
}
}
}
for (int i = k; i < chars.length; i++) {
for (int j = 0; j < chars[0].length; j++) {
if (j < hang / 2) {
if (chars[i - 1][j + 1] == 'X') {
chars[i][j] = 'X';
} else {
chars[i][j] = ' ';
}
} else if (j > hang / 2) {
if (chars[i - 1][j - 1] == 'X') {
chars[i][j] = 'X';
} else {
chars[i][j] = ' ';
}
}
}
}
int kk = 0;
int jj = 0;
for (int i = 0; i < ge; i++) {
if (i == 0) {
kk = 0;
} else {
kk = 1;
}
for (int j = kk; j < chars.length; j++) {
for (int j2 = 0; j2 < chars[0].length; j2++) {
if (j == hang / 2) {
if (chars[j][j2] == 'X') {
System.out.print(chars[j][j2]);
break;
} else {
System.out.print(chars[j][j2]);
}
} else {
if (chars[j][j2] == 'X') {
jj++;
}
System.out.print(chars[j][j2]);
if (jj == 2) {
break;
}
}
}
jj = 0;
System.out.println();
}
}
if(n!=0) {
System.out.println();
}
}
}
}