01/10/2018, 00:27

Chương trình mã hóa ceasar dùng modular trên Java

mình đang viết 1 chương trình mã hóa nhỏ nhưng khi in ra thì khoảng trống lại thành chữ c. Mong mn giúp sửa lại ạ.

public static void main(String[] args) {
System.out.println("Enter your message: ");
Scanner inp = new Scanner(System.in);
final String alpha = " abcdefghijklmnopqrstuvwxyz"; 
String str = inp.nextLine();   //the string user input           
String ans = "";     //the encrypted output string
int ind1; int ind2;  //the index of str and ans strings
char x;              //the character followed by ind2 in ans string
int i = 0;
while (i < str.length()) {
    ind1 =alpha.indexOf(str.charAt(i)); //index of str with i variable 
    ind2 = 1+ (ind1 + 3-1)%26;              //using ind1 to count ind2
    i++;            
    x = alpha.charAt(ind2);             
    ans = ans +x;            
}
       System.out.println(ans);

đây là đề bài:
Caesar cipher is a substitution cipher method which was used by Julius Caesar to protect
private information from the enemies. By replace each letter in the original letter with a letter
some fixed positions down the alphabet, the result is meaningless to anyone who doesn’t
know the secret.
Write a program that apply Caesar cipher on a message taken from user and print the
result. Assuming all input letters are lower case. The letters shift are provided as below.
Plain: ABCDEFGHIJKLMNOPQRSTUVWXYZ
Cipher: DEFGHIJKLMNOPQRSTUVWXYZABC
E.g. Original message: hello world
Encrypted message: khoor zruog

Bùi Minh Phúc viết 02:42 ngày 01/10/2018

Thêm điều kiện để chương trình ko mã hóa khoảng trắng.
Nếu index của chuỗi được nhập là vị trí 0 trong chuỗi alpha, tức là khoảng trắng, thì gán x bằng khoảng trắng luôn, còn lại thì mã hóa.

while (i < str.length()) {
    ind1 =alpha.indexOf(str.charAt(i)); //index of str with i variable 
    //sửa từ chỗ này
    if(ind1 == 0) x = " ";
    else {
    ind2 = 1+ (ind1 + 3-1)%26;              //using ind1 to count ind2
    x = alpha.charAt(ind2);
    }          
    i++;
    //đến chỗ này
    ans = ans +x;            
}
Thành Nguyễn viết 02:32 ngày 01/10/2018

tks bạn nhé. mình sửa đc r

Phước Võ Văn viết 02:30 ngày 01/10/2018

bài này trên web nào vậy

Bài liên quan
0