问题出现在主方法中,array1和array2分别是在输入数字范围内的回文数和素数,array用来储存前两个数组中的共同项
在循环中执行add方法在存入了101这个元素后就不再执行了
(定义好了的方法测试过了是没有问题的)
import java.util.ArrayList;
import java.util.Scanner;
public class huiwen2 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = sc.nextInt();//输入要确定的素数回文数的范围
ArrayList<Integer> array1 = pd(num);//范围内的回文数
ArrayList<Integer> array2 = sushu(num);//范围内的素数
ArrayList<Integer> array = new ArrayList<>();//范围内的素数回文数
int z = 0;//z用来保存索引j
for (int i = 0; i < array1.size(); i++) {
for (;z < array2.size();z++) {
if (array1.get(i) == array2.get(z)) System.out.println(array.add(array1.get(i)));
if (array1.get(i) < array2.get(z))break;//减少不必要的运算
}
}
for (int i = 0; i < array.size(); i++) {
System.out.println(array.get(i));
}
}
public static char[] zhuanhuan(int i){
String str = String.valueOf(i);
return str.toCharArray();
}//1.把输入数字转换为char[]
public static ArrayList<Integer> pd(int sc){
ArrayList<Integer> arrayList= new ArrayList<>();
for (int num = 0; num <= sc; num++) {
char[] charArray = zhuanhuan(num);
int longChar = charArray.length;
int i = 0,j = longChar - 1;
while (i <= j) {
if (charArray[i++] != charArray[j--]) break;
else if (i >= j){
arrayList.add(num);
break;
}
}
}
return arrayList;//回文数数组
}//2.整合出回文数放到数组中
public static ArrayList<Integer> sushu(int sc){
ArrayList<Integer> array1 = new ArrayList<>();
for (int i = 2; i <= sc; i++) {
for (int j = 2; j <= i; j++) {
if (i%j == 0 && i != j)break;
if (j == i)array1.add(i);
else continue;
}
}
return array1;
}//3.获得范围内的素数
}
true
true
true
true
true
true
2
3
5
7
11
101
要是单独使用add添加符合if条件又没存入的元素则没有问题