欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

黑马javaSE内部编程题10道--第一道源码,javase10道

来源: javaer 分享于  点击 22739 次 点评:43

黑马javaSE内部编程题10道--第一道源码,javase10道


package com.se;

import java.util.ArrayList;
import java.util.List;

/**
 * 1:(Java基础知识的考察) 某个公司采用公用电话传递数据信息,数据是小于8位的整数,为了确保安全,在传递过程中需要加密,加密规则如下:
 * 首先将数据倒序,然后将每位数字都加上5,再用和除以10的余数代替该数字,最后将第一位和最后一位数字交换。
 * 请任意给定一个小于8位的整数,然后,把加密后的结果在控制台打印出来。
 * 
 * @author 80514938 2013-10-22
 */

public class Demo_1 {

	// 获取对应长度的最小值,如长度为5,最小值则为10000
	public static int getMinByLength(int length) {
		int min = 1;
		for (int j = length - 1; j > 0; j--) {
			min = 10 * min;
		}
		return min;
	}

	// 把号码的每个数字存进list中
	public static List<Integer> getNumList(int num) {
		List<Integer> nl = new ArrayList<Integer>();
		int length = (num + "").length();
		int len = length;
		for (int i = 0; i < length; i++) {
			int minNum = getMinByLength(len);
			nl.add(num / minNum);
			len--;
			num = num % minNum;
		}

		return nl;
	}

	// 倒序输出数字
	public static int getDescNum(int num) {
		int length = (num + "").length();
		int len = length;
		int result = 0;
		List<Integer> numList = getNumList(num);
		for (int i = length - 1; i >= 0; i--) {
			int minNum = getMinByLength(len);
			result = result + numList.get(i) * minNum;
			len--;
		}

		return result;
	}

	// 倒序
	public static int desc(int num) {
		int length = (num + "").length();
		int len = length;
		int result = 0;
		for (int i = 0; i < length; i++) {
			int minNum = getMinByLength(len);
			int min = getMinByLength(i + 1);
			result = result + (num / minNum) * min;
			len--;
			num = num % minNum;
		}

		return result;
	}

	// 调换第一位与最后一位
	public static int siteReplace(int num) {
		int length = (num + "").length();
		int len = length;
		int result = 0;
		List<Integer> numList = getNumList(num);
		for (int i = 0; i < length; i++) {
			int minNum = getMinByLength(len);
			if (i == 0) {
				result = result + numList.get(length - 1) * minNum;
			} else if (i == length - 1) {
				result = result + numList.get(0) * minNum;
			} else {
				result = result + numList.get(i) * minNum;
			}
			len--;
		}

		return result;
	}

	// 每位数字都加上5,再用和除以10的余数代替该数字
	public static int getReplaceNum(int num) {
		int length = (num + "").length();
		int len = length;
		int result = 0;
		for (int i = 0; i < length; i++) {
			int minNum = getMinByLength(len);
			int sum = num / minNum + 5;
			result = result + (sum % 10) * minNum;
			len--;
			num = num % minNum;
		}

		return result;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		int phone = 1002;
		int desc = desc(phone);
		System.out.println("倒序1:" + desc);
		// 倒序
		int descPhone = getDescNum(phone);
		System.out.println("倒序2:" + descPhone);
		// 每位数字都加上5,再用和除以10的余数代替该数字
		int result = getReplaceNum(descPhone);
		System.out.println(result);
		// 第一个与最后一个替换
		result = siteReplace(result);
		System.out.println("result=" + result);

	}

}

获取号码的倒序写了两个方法,一个取巧的用了List,一个完全是比较复杂的逻辑判断了。

若有错误,欢迎指出;若有更好的实现方式,还请告知,谢谢。



相关文章

    暂无相关文章

用户点评