思路回顾:
- 使用两个字符串接收 密码字符串和 密钥,注意如果第一行输入有空格的话,需要使用scanner.nextline()方法输入,判断是否有下一行(密钥)
- 进行细化(字符串+密钥)运算时,使用char类型接收单个字符会使得思路更加清晰
题目
输入一个原始字符串(长度小于80),然后输入一个5位的数字字符串作为加密密钥,对原始字符串中的每个字符根据其位置(对5取模)变换为加上数字字符串中的数字的字符。如输入原始字符串student,然后输入5位的加密数字12345,因此:
原始字符 加密数字 变换后的字符 s 1 t t 2 v u 3 x d 4 h e 5 j n 1 o t 2 v
加密后的字符串位:tvxhjov
输入格式:
第一个输入一个原始字符串
第二行输入一个5位用来加密的数字字符串输出格式:
加密后的字符串
输入样例1:
在这里给出一组输入。例如:
student 12345
输出样例1:
在这里给出相应的输出。例如:
tvxhjov
输入样例2:
在这里给出一组输入。例如:
Welcome to Java! 10932
输出样例2:
在这里给出相应的输出。例如:
Xeufqne)wq!Jjyc"
输出结果:
题解:
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String str=sc.nextLine();
//输入数据1 abcdefgh 注意空格会影响next()的输入
String a=sc.next();//输入数据2 12345
StringBuffer s=new StringBuffer();
int[] n=new int[a.length()];
for (int i = 0; i <n.length ; i++) {
n[i]=a.charAt(i)-'0';//把字符分开存储
}
for (int i = 0;i<str.length();i++){
int c = str.charAt(i);
//拿一个字符变量接收它
char cc=(char)(c+n[i%5]);
//拿一个字符变量接收它变换之后的值
s.append(cc);
}
System.out.println(s);
}
}