第二题

image-20230916152650561

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public class test1 {
public static void main(String[] args) {
int sum=0;
for (int i = 1; i <=2019; i++) {
if (add(i)){
// System.out.print(i+" ");
sum+=i;
}
}
System.out.println("1~2019中所有这样的数之和为:"+sum);
}
//写一个嵌套,找出含有2 0 1 9 这些数字的数
public static boolean add(int i) {
while (i!=0){
int num=i%10;
if(num==2||num==0||num==1||num==9){

return true;
}
i=i/10;
add(i);
}
return false;
}
}

运行结果

image-20230916152824568

第二种解法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class test2 {
public static void main(String[] args) {
//这是第二种算法,思路是数据类型转成字符数组,提黄字符数组比较
int count=0;
for (int i = 1; i <=2019 ; i++) {
//数字转字符串
String j=i+" ";
//利用函数将字符串转成字符数组
char []sc=j.toCharArray();
//定义一个变量存放相加的数值

//通过for循环判断是否有2019这几个数
for (int k = 0; k < sc.length; k++) {
if(sc[k]=='0'||sc[k]=='1'||sc[k]=='2'||sc[k]=='9'){
count+=i;
break;//此处break不能漏,不然数字会加重复
}
}

}
System.out.println("1~2019中符合条件的数之和为:"+count);
}
}

运行结果

image-20230916180053514