答:
第一题:
```java
import java.util.Scanner;
public class Pattern {
public static void main(String[] args) {
int[] a = {0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0};
Scanner scanner = new Scanner(System.in);
System.out.print("请输入一个大于0且小于等于16的整数:");
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
if (a[i] == a[j]) {
System.out.print("+ ");
} else {
System.out.print("- ");
}
}
System.out.println();
}
scanner.close();
}
}
这个程序首先会初始化一个包含特定元素的数组 a。然后,它会提示用户输入一个大于0且小于等于16的整数 n。之后,程序会按照规则输出由 + 和 - 两种字符组成的 n 行 n 列的二维图案。如果数组 a 中下标为 i 的元素和下标为 j 的元素相同,那么二维图案的第 i 行第 j 列的位置就输出 +;否则,就输出 -。每行相邻的字符之间用两个空格隔开。
********************************************
第二题:
```java
public class MagicNum {
public static void main(String[] args) {
for (int i = 1000; i <= 9999; i++) {
if (isMagic(i)) {
System.out.println(i);
}
}
}
public static boolean isMagic(int num) {
int firstDigit = num / 1000; // 获取千位数字
int secondDigit = (num / 100) % 10; // 获取百位数字
int thirdDigit = (num / 10) % 10; // 获取十位数字
int fourthDigit = num % 10; // 获取个位数字
return firstDigit == fourthDigit && secondDigit == thirdDigit;
}
}
在上面的代码中,main方法遍历1000到9999之间的每个数字,并调用isMagic方法来检查每个数字是否满足条件。如果满足条件,则将数字打印到控制台。isMagic方法通过数学运算来提取出每个数字的千位、百位、十位和个位数字,然后检查这些数字是否满足条件。如果满足条件,则返回true,否则返回false。