要求是输入的字符像后移动3位。
如果是XYZ就转换成ABC。
这是我做的方法可是有问题。
求解。
谢谢。
package com.jiali.ceshi;public class Encryption {
public String encoding(String str) {
char[] strs = str.toCharArray();//这里是把他转换成字符
for (int i = 0; i < strs.length; i++) {//控制循环次数
if (strs[i] >= 'a' && strs[i] <= 'z' || strs[i] >= 'A'
&& strs[i] <= 'Z') { //判断STR[I】是否大于a或者z 或者小于A或者Z
strs[i]+= 3;
if (strs[i] >= 'x' || strs[i] >= 'X') {//如果strs[i]是大于等于x或者X的话执行下面的语句
strs[i] -= 26; //如果符合上面的条件执行数组i的值-26
}
//再+上3就是转换为a到C。
} else {
System.out.println("存在未知字符");
break;
}
}
return new String(strs);
}
}
如果是XYZ就转换成ABC。
这是我做的方法可是有问题。
求解。
谢谢。
package com.jiali.ceshi;public class Encryption {
public String encoding(String str) {
char[] strs = str.toCharArray();//这里是把他转换成字符
for (int i = 0; i < strs.length; i++) {//控制循环次数
if (strs[i] >= 'a' && strs[i] <= 'z' || strs[i] >= 'A'
&& strs[i] <= 'Z') { //判断STR[I】是否大于a或者z 或者小于A或者Z
strs[i]+= 3;
if (strs[i] >= 'x' || strs[i] >= 'X') {//如果strs[i]是大于等于x或者X的话执行下面的语句
strs[i] -= 26; //如果符合上面的条件执行数组i的值-26
}
//再+上3就是转换为a到C。
} else {
System.out.println("存在未知字符");
break;
}
}
return new String(strs);
}
}
public String encoding(String str) {
char[] strs = str.toCharArray();//这里是把他转换成字符
for (int i = 0; i < strs.length; i++) {//控制循环次数
//这里你要加上括号
if ((strs[i] >= 'a' && strs[i] <= 'z') || (strs[i] >= 'A'
&& strs[i] <= 'Z')) { //判断STR[I】是否大于a或者z 或者小于A或者Z
strs[i]+= 3;
if (strs[i] >= 'x' || strs[i] >= 'X') {//如果strs[i]是大于等于x或者X的话执行下面的语句
strs[i] -= 26; //如果符合上面的条件执行数组i的值-26
}
//再+上3就是转换为a到C。
} else {
System.out.println("存在未知字符");
break;
}
}
return new String(strs);
}
}
按照你的方法加了括号还是一样运行错误了啊。
abcd加密后成了JKLM
改成
if (strs[i] >= 'x' || (strs[i] >= 'X' && strs[i]<'a'))
怎么回事啊...
package com.jiali.ceshi;import java.util.Scanner;public class Swither {
public static void main(String[] args) {
Scanner input=new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str=input.next();
Encryption en=new Encryption();
String encodingStr=en.encoding(str);
System.out.println("加密的字符串"+encodingStr);
Decryption de=new Decryption();
String decodingStr=de.encoding(str);
System.out.println("解密的字符串:"+decodingStr);
}
}
public String encoding(String str) {
char[] strs = str.toCharArray();//这里是把他转换成字符
for (int i = 0; i < strs.length; i++) {//控制循环次数
if ((strs[i] >= 'a' && strs[i] <= 'z' || strs[i] >= 'A'
&& strs[i] <= 'Z')) { //判断STR[I】是否大于a或者z 或者小于A或者Z
if (strs[i] >= 'x'|| strs[i] >= 'X'&&strs[i]>'a') {//如果strs[i]是大于等于x或者X的话执行下面的语句
strs[i] -= 26; //如果符合上面的条件执行数组i的值-26
}
//再+上3就是转换为a到C。
strs[i]+= 3;
} else {
System.out.println("存在未知字符");
break;
}
}
return new String(strs);
}
}
public String encoding(String str) {
char[] strs = str.toCharArray();
for (int i = 0; i < strs.length; i++) {
if ((strs[i] >= 'a' && strs[i] <= 'z' || strs[i] >= 'A'
&& strs[i] <= 'Z')) {
if (strs[i] >= 'x'|| strs[i] >= 'X'&&strs[i]>'a') {
strs[i] += 26;
}
strs[i] -= 3;
} else {
System.out.println("存在未知字符");
break;
}
}
return new String(strs);
}
}
public String encoding(String str) {
char[] strs = str.toCharArray();//转换成字符
for (int i = 0; i < strs.length; i++) {//控制循环次数
if ((strs[i] >= 'a' && strs[i] <= 'z' || strs[i] >= 'A'
&& strs[i] <= 'Z')) { //判断是否大于a或者z 或者小于A或者Z
if (strs[i] <'a'|| strs[i] > 'z'&&strs[i]>'Z'||strs[i]<'A') {//如果strs[i]是大于等于x或者X的话执行下面的语句
strs[i] -= 26; //如果符合上面的条件执行数组i的值-26
}
//再+上3就是转换为a到C。
strs[i]+= 3;
} else {
System.out.println("存在未知字符");
break;
}
}
return new String(strs);
}
}
这样就没问题了。。
你好像是 if (strs[i] <'a'|| strs[i] > 'z'&&strs[i]>'Z'||strs[i]<'A') {//如果strs[i]是大于等于x或者X的话执行下面的语句这里的问题。。