首页 > 其他 > 详细

回文数字

时间:2020-04-18 14:17:34      阅读:55      评论:0      收藏:0      [点我收藏+]

技术分享图片

技术分享图片

解析: 这题我觉得主要考察的地方是字符串的使用,主要是两个地方,一个是字符串的逆序,另一个是字符串中字符的相加。字符串的逆序实现方法比较多,我比较常用的是用过String类的substring()方法将这个字符串从后往前截取,拼成一个新的逆序字符串;也可以使用StringBuffer类的reverse()方法将字符串进行逆序,这个方法就会简单一些。(这里有个需要注意的地方是:当需要截取字符串中的字符进行int类型的相加时,是不可以使用charAt()方法进行截取的,字符相加时是用当前字符在ASCII码中的排序进行相加的,例如字符‘1‘相当于48.所以我这里用的是substring()方法)

题目比较简单,直接上代码

package _12_26_test;
/*回文数字
 * 
 * 数字满足以下两个条件:
 * 1、输入n,abc符合a+b+c=n
 * 2、abc=cba
 * 3、数字居于10000、999999之间
 * 
 * 
 * 字符串的逆序
 * 
 * */

import java.util.Scanner;



public class fourteen {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner scanner = new Scanner(System.in);

		int num = scanner.nextInt();
		boolean flag = false;

		for (int i = 10000; i < 999999; i++) {
			String strTem = String.valueOf(i);
			int intTem = 0;
			String reTem = "";
			// 各个位数相加
			for (int j = 0; j < strTem.length(); j++) {
				intTem = intTem + Integer.parseInt(strTem.substring(j, j+1));
			}
			if (intTem == num) {
				// 若符合各个位数相加等于n,进行回文数判断
				for (int k = 0; k < strTem.length(); k++) {
					reTem = reTem + strTem.substring(strTem.length()-1-k,strTem.length()-k );
				}
				if (reTem.equals(strTem)) {
					flag = true;
					System.out.println(i);
				}

			}

		}

		if (!flag) {
			System.out.println(-1);
		}

	}

}

回文数字

原文:https://www.cnblogs.com/lyd447113735/p/12724956.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!