使用输入将int转换为char(已编辑)

时间:2015-10-10 14:03:31

标签: java

我的程序应该将一封信转换成距离它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不起作用。我该怎么办?

3 个答案:

答案 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);
        }
    }