在論壇日常一逛時發現了一道題,雖然要求是用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,關注我的微信公衆號"空谷小莜藍",大家一起加油!