密码是我们生活中非常重要的东东,我们的那么一点不能说的秘密就全靠它了。哇哈哈. 接下来渊子要在密码之上再加一套密码,虽然简单但也安全。

假设渊子原来一个BBS上的密码为zvbo9441987,为了方便记忆,他通过一种算法把这个密码变换成YUANzhi1987,这个密码是他的名字和出生年份,怎么忘都忘不了,而且可以明目张胆地放在显眼的地方而不被别人知道真正的密码。

他是这么变换的,大家都知道手机上的字母: 1--1, abc--2, def--3, ghi--4, jkl--5, mno--6, pqrs--7, tuv--8 wxyz--9, 0--0,就这么简单,渊子把密码中出现的小写字母都变成对应的数字,数字和其他的符号都不做变换,

声明:密码中没有空格,而密码中出现的大写字母则变成小写之后往后移一位,如:X,先变成小写,再往后移一位,不就是y了嘛,简单吧。记住,z往后移是a哦。

可以用if判断,也可以用正则匹配

package test;

import java.util.Scanner;

public class exam13 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
String str = scanner.nextLine();
// char[] pwd = str.toCharArray();
// System.out.println(truepwd(str).toString());
System.out.println(truepwd2(str));
}
scanner.close();
} // 方法1:if判断
public static StringBuilder truepwd(String str) {
StringBuilder sbBuilder = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char ch = str.charAt(i);
if (ch >= 'A' && ch < 'Z') {
ch = (char) (ch + 1 - ('A' - 'a'));
} else if (ch == 'Z') {
ch = 'a';
} else if (ch >= 'a' && ch <= 'z') {
if (ch == 'a' || ch == 'b' | ch == 'c') {
ch = '2';
} else if (ch == 'd' || ch == 'e' || ch == 'f') {
ch = '3';
} else if (ch == 'g' || ch == 'h' || ch == 'i') {
ch = '4';
} else if (ch == 'j' || ch == 'k' || ch == 'l') {
ch = '5';
} else if (ch == 'm' || ch == 'n' || ch == 'o') {
ch = '6';
} else if (ch == 'p' || ch == 'q' || ch == 'r' || ch == 's') {
ch = '7';
} else if (ch == 't' || ch == 'u' || ch == 'v') {
ch = '8';
} else if (ch == 'w' || ch == 'x' || ch == 'y' || ch == 'z') {
ch = '9';
}
}
sbBuilder.append(ch);
}
return sbBuilder;
} // 方法2:使用正则表达式
public static String truepwd2(String str) {
StringBuffer sBuffer = new StringBuffer(str);
for (int i = 0; i < str.length(); i++) {
char ch = sBuffer.charAt(i);
if (ch >= 'A' && ch < 'Z') {
ch = (char) (ch + 1 - ('A' - 'a'));
} else if (ch == 'Z') {
ch = 'a';
} else if (ch >= 'a' && ch <= 'z') {
if (String.valueOf(ch).matches("[abc]")) {
ch = '2';
} else if (String.valueOf(ch).matches("[def]")) {
ch = '3';
} else if (String.valueOf(ch).matches("[ghi]")) {
ch = '4';
} else if (String.valueOf(ch).matches("[jkl]")) {
ch = '5';
} else if (String.valueOf(ch).matches("[mno]")) {
ch = '6';
} else if (String.valueOf(ch).matches("[pqrs]")) {
ch = '7';
} else if (String.valueOf(ch).matches("[tuv]")) {
ch = '8';
} else if (String.valueOf(ch).matches("[wxyz]")) {
ch = '9';
}
}
sBuffer.setCharAt(i, ch);
}
return sBuffer.toString();
} }

java笔试之简单密码的更多相关文章

  1. Java消息系统简单设计与实现

    前言:由于导师在我的毕设项目里加了消息系统(本来想水水就过的..),没办法...来稍微研究研究吧..简单简单... 需求分析 我的毕设是一个博客系统,类似于简书这样的,所以消息系统也类似,在用户的消息 ...

  2. Java笔试面试题整理第六波(修正版)

    转载至:http://blog.csdn.net/shakespeare001/article/details/51330745 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  3. Java笔试面试题整理第四波

    转载至:http://blog.csdn.net/shakespeare001/article/details/51274685 作者:山代王(开心阳) 本系列整理Java相关的笔试面试知识点,其他几 ...

  4. 应聘Java笔试时可能出现问题及其答案

    有感:应聘Java笔试时可能出现问题及其答案 huij 前段时间因为要参加一个笔试,在准备期间在网上找到了两条关于笔试题目的文章,其中一篇为<<有感:应聘Java笔试时可能出现问题> ...

  5. Java语言实现简单FTP软件------>FTP软件主界面的实现(四)

    首先看一下该软件的整体代码框架                        1.首先介绍程序的主入口FTPMain.java,采用了一个漂亮的外观风格 package com.oyp.ftp; im ...

  6. java使用face++简单实现人脸识别注册登录

    java使用face++简单实现人脸识别注册登录 前言 人脸识别,好高大上!!! 理解之后很简单. 支付宝使用的就是face++, 至于face++账号信息,apikey…..,本文不做讲述,网上很多 ...

  7. AC日记——简单密码 openjudge 1.7 10

    10:简单密码 总时间限制:  1000ms 内存限制:  65536kB 描述 Julius Caesar曾经使用过一种很简单的密码.对于明文中的每个字符,将它用它字母表中后5位对应的字符来代替,这 ...

  8. Java 异步处理简单实践

    Java 异步处理简单实践 http://www.cnblogs.com/fangfan/p/4047932.html 同步与异步 通常同步意味着一个任务的某个处理过程会对多个线程在用串行化处理,而异 ...

  9. 使用Java编写一个简单的Web的监控系统cpu利用率,cpu温度,总内存大小

    原文:http://www.jb51.net/article/75002.htm 这篇文章主要介绍了使用Java编写一个简单的Web的监控系统的例子,并且将重要信息转为XML通过网页前端显示,非常之实 ...

随机推荐

  1. java 直接调用micorosoft office (2003-2007和2010版本)中excel中计算函数

    主要是讲述java中poi读取excel,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为:xls和xlsx 读取excel和MySQL相关: java的poi技 ...

  2. Spring-Security (学习记录五)--配置登录时,密码采用md5加密,以及获取登录信息属性监听同步自己想要的登录信息

    目录 1. PasswordEncoder 采用密码加密 2. 获取当前的用户信息 1. PasswordEncoder 采用密码加密 使用前面的例子.可以看出我们数据库密码是采用明文的,我们在登录的 ...

  3. mysql的JDBC连接

    程序是通过DriverManager注册驱动,所以加载之后可以直接使用DriverMannagermysql中的多态: 不仅是赋值的时候使用了多态,返回的时候都是返回的借口(不是返回的子类对象),所以 ...

  4. exe4j 打包(多个jar打包)

    一,自行下载exe4j 注册码: 用户名和公司名可随便填A-XVK258563F-1p4lv7mg7savA-XVK209982F-1y0i3h4ywx2h1A-XVK267351F-dpurrhny ...

  5. Algo: maxSubArray vs. maxProduct

    这两个问题类似,都可利用动态规划思想求解. 一.最大连续子序列和 https://leetcode.com/problems/maximum-subarray/description/ https:/ ...

  6. C++ 系列:交换两个数字

    1. 创建中间变量 这是最快也是最简单的办法,例如: #include<stdio.h> int main(){ int a=10; int b=20; int temp; printf( ...

  7. JQuery ajax提交表单及表单验证

    JQuery ajax提交表单及表单验证 博客分类: jsp/html/javascript/ajax/development Kit 开源项目   注:经过验证,formValidator只适合一个 ...

  8. drop大表

    删除大表: .给对应表的ibd文件建立硬链接,因为表的数据和索引都在该文件中. ln /home/work/status.ibd /home/work/status.ibd.hdlk .主库上删除表, ...

  9. 手写代码注意点 -- int[]

    int[].length char[] 的数组长度,是小写的l开头: char[].length; 不是:char[].Length int[] 没有.contains(), .indexOf() . ...

  10. CommonsMultipartResolver 文件上传

    依赖 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fi ...