- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import java.util.Collections;
- public class Test {
- /**
- * @param args
- * @throws IOException
- */
- // 从控制台接受输入数据,数据是小于8位的整数,加密该数据并在控制台上打印
- // 加密规则 将数据倒序,每个数字+5,再模10替换该数字,最后将最后一位和第一位互换.
- public static void main(String[] args) throws IOException {
- // TODO Auto-generated method stub
- // 接受数据输入
- BufferedReader bufr = new BufferedReader(new InputStreamReader(
- System.in));
- String line = null;
- while ((line = bufr.readLine()) != null) { // 作为字符串比较方便处理
- if (line.length() > 8 || line.length() == 0) {
- System.out.println("输入的数字位数超出范围,请重新输入");
- continue;
- }
- if ("over".equals(line)) // 设置结束条件
- break;
- System.out.println(encode(line));
- }
- }
- private static String encode(String line) {
- // TODO Auto-generated method stub
- char[] chs = line.toCharArray();
- ArrayList<String> al = new ArrayList<String>();
- for (char c : chs) {
- int i = Character.digit(c, 10); // 将字符转换为数字
- if (i == -1) // 如果输入的不是数字,提示错误
- return "输入的数值带有字符,请检查";
- i = (i + 5) % 10; // 加密后
- al.add(Integer.toString(i)); // 将数字转换为字符串存储
- }
- // System.out.println("加密后:"+al);
- Collections.reverse(al); // 将数组反转
- String start = al.get(0); // 头尾互换
- String end = al.get(al.size() - 1);
- al.set(0, end);
- al.set(al.size() - 1, start);
- // System.out.println("头尾互换:"+al);
- return al.toString();
- }
- }
复制代码 |