在论坛日常一逛时发现了一道题,虽然要求是用C语言来写,但是我想用Java试试,于是写下了这篇博客!
题目描述:
观察数字:12321、123321都有一个共同的特征,无论从左到右度,还是从右到左读,都是相同的,这样的数字叫作:回文数字
本题要求你找到一些5位或者6位的十进制数字,满足下列要求:
输入:
一个正整数n(10<n<100)表示要求满足的数位和
输出:
若干行,每行包括一个满足要求的5位或者6位整数,数字按从小到大的顺序排列。如果没有满足要求的,输出-1
样例输入:
44
样例输出:
99899
499994
589985
598895
679976
688886
697796
769967
778877
787787
796697
859958
868868
877778
886688
895598
949949
958859
967769
976679
985589
994499
分析:
①首先,找到一些5位或6位的十进制数字,知道区间在10000——1000000之间用循环来判断条件
②输出的各位数字,严格按照数字从小到大的顺序隔行依次输出,且输出的各位数字满足各位上的数字之和相同且等于输入的数字值的大小,回文数本身还有限制,需要分情况进行讨论;
③如果没有满足条件的的数值,就返回-1;
经过一分析,发现这道题,不是很难,但是把比较多的知识点杂在一起了,所以对新手来说解决还是比较麻烦的:
源代码如下:
import java.util.Scanner;
class SwitchDemo
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入正整数n(10<n<100):");
int n = sc.nextInt(); //输入(10<n<100)的整数
System.out.println("------------------------------------");
int count == 0; //用来记录满足条件的数值的个数;
for(int i = 10000;i < 1000000;i++)
{
int ge = i % 10;
int shi = i / 10 % 10;
int bai = i / 10 / 10 % 10;
int qian = i / 10 / 10 / 10 % 10;
int wang = i / 10 / 10 / 10 / 10 % 10;
int total = ge + shi + bai + qian + wang; //统计各个数位的数字之和
if(i < 100000)
{
if(total == n && ge == wang && shi == qian)
{
System.out.println(i);
count++;
}
}
else
{
int shiwang = i / 10 /10 /10 /10 /10 % 10;
total += shiwang;
if(total == n && ge == shiwang && shi == wang && bai == qian)
{
System.out.println(i);
count++;
}
}
if(count == 0)
{
return -1; //没有满足条件的数值,返回-1
}
}
}
}
代码截图:
写在最后:
最近在学Java,有兴趣一起学习的小伙伴加我微信W17663712231,关注我的微信公众号"空谷小莜蓝",大家一起加油!