我的程序应该将一封信转换成距离它2个字母的字母。像a到c,b到d。 我只能用英文字母表中的前10个字母。 ('我会去'a','j'会去'b'cuz我只能用10个字母。
import java.util.Scanner;
public class part6 {
public static void main(String[] args) {
Scanner keyboard=new Scanner(System.in);
System.out.println("Please enter a 4 letter word only uses the first 10 letter on english alphabet(a,b,c,d,e,f,g,h,i,j): ");
Scanner keyboard=new Scanner(System.in);
String s1 = keyboard.next();
String s2 = "z1";
s2=s1.toLowerCase();
if (s1.length() !=4)
System.out.println("please enter a word with 4 letters");
char c1= s2.charAt(0);
char c2= s2.charAt(1);
char c3= s2.charAt(2);
char c4= s2.charAt(3);
int i1 =(int) c1;
int i2= (int) c2;
int i3= (int) c3;
int i4= (int) c4;
if(i1>96 && i1<107) // a = 97 , j = 106
System.out.println(s2);
else if (i2>96 && i2<107)
System.out.println(s2);
else if (i3>96 && i3<107)
System.out.println(s2);
else if (i4>96 && i4<107)
System.out.println(s2);
else
System.out.println("wrong character using!");
}
}
所以新问题就是呃,即使我输入abcy或aaaq,我也会得到abcy和aaaq。 int不起作用。我该怎么办?
答案 0 :(得分:0)
第1步:
测试输入是否在&#39; a&#39;之间。和&#39; j&#39;对于每个角色
第2步:
使用带有三种情况的开关:&#39; i&#39;,&#39; j&#39; &安培;默认将输出所需的值
第3步:
在String对象中连接结果。
以下是代码解决方案:
public static void main(String arg[]){
String input = "abcdefghij";
String output = "";
if (checkValidity(input)){
for (int i = 0 ; i < input.length() ; i++){
output += encrypt(input.charAt(i));
}
}
System.out.println(output);
}
public static boolean checkValidity(String str){
for (char c : str.toCharArray()){
if (c < 'a' || c > 'j'){
return false;
}
}
return true;
}
public static char encrypt (char c){
switch (c){
case 'i' : return (char) (c-8);
case 'j' : return (char) (c-8);
default : return (char) (c+2);
}
}
答案 1 :(得分:0)
我有点清理你的代码。也许这样的事情就像你想要的那样?
import java.util.Scanner;
public class Part6 {
public static void main(String[] args) {
System.out.println("Please enter a 4 letter word only uses the first 10 letter on english alphabet(a,b,c,d,e,f,g,h,i,j): ");
Scanner keyboard=new Scanner(System.in);
String input = keyboard.next();
if (input.length() !=4) {
System.out.println("please enter a word with 4 letters");
return;
}
transformAndPrint(input.charAt(0));
transformAndPrint(input.charAt(1));
transformAndPrint(input.charAt(2));
transformAndPrint(input.charAt(3));
}
private static void transformAndPrint(char inputChar) {
if(inputChar>96 && inputChar<107) {
int newChar = inputChar - 96;
newChar = (newChar + 2) % 10;
newChar = newChar + 96;
System.out.print((char) newChar);
} else {
System.out.print(" ");
}
}
}
答案 2 :(得分:0)
public static char transform(char s){
int base = s - 'a';
int increment = base + 2;
int circularShiftIncrement = increment % 10;
int transformToCharValue = circularShiftIncrement + 'a';
return (char)transformToCharValue;
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while(scanner.hasNext()){
String s = scanner.next();
char c = s.charAt(0);
char transformedString = transform(c);
System.out.println(transformedString);
}
}