嗨,我正在開發一個塞薩爾算法的應用程序不包含錯誤,但我有特殊字符我有方形的,而不是相應的字符的問題也我不知道如何應對的空間我的代碼加密算法塞薩爾
package cesar;
import java.util.Scanner;
public class Cesar {
private static short codeMajuscule=65;
private static short codeMinuscule=97;
private static short tailleAlph = 26;
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
System.out.println("Entrer la chaine a crypter");
String phrase = sc.next();
System.out.println("entrer votre cle");
int c= sc.nextInt();
System.out.println("la phrase après transformation " + chiffrement( phrase , c));
}
private static String chiffrement(String ch , int n){
String chDecripte="";
ch=ch.replaceAll("[éèêë]", "e");
ch=ch.replaceAll("[Ç]", "C");
ch=ch.replaceAll("[ÈÉÊË]", "E");
ch=ch.replaceAll("[ÌÍÎÏ]", "I");
ch=ch.replaceAll("Ñ", "N");
ch=ch.replaceAll("ÒÓÔŒ", "O");
ch=ch.replaceAll("ÙÚÛÜ", "U");
ch=ch.replaceAll("ÝŸ", "Y");
ch=ch.replaceAll("àáâæ", "a");
ch=ch.replaceAll("[ÀÁÂÆ]", "A");
ch=ch.replaceAll("[èéêë]", "e");
ch=ch.replaceAll("[ìíîï]", "i");
ch=ch.replaceAll("[ñ]", "n");
ch=ch.replaceAll("[òóôœ]", "o");
ch=ch.replaceAll("[ùúûü]", "u");
ch=ch.replaceAll("[ýÿ]", "y");
for(int i = 0 ; i < ch.length() ; i++){
if(ch.codePointAt(i) >= codeMajuscule &&
ch.codePointAt(i) <= (codeMajuscule + tailleAlph)){
chDecripte += (char) ((ch.codePointAt(i) - codeMajuscule + n) % tailleAlph + codeMajuscule) ;
}else if(ch.codePointAt(i) >= codeMinuscule &&
ch.codePointAt(i) <= (codeMinuscule + tailleAlph)){
chDecripte += (char) ((ch.codePointAt(i) - codeMinuscule + n) % tailleAlph + codeMinuscule) ;
}else{
chDecripte += ch.charAt(i);
}
}
return chDecripte;
}
}
,並感謝
你能給出一個示例輸入和輸出來顯示你的問題嗎? – coolioasjulio
例如當我寫élève或類似的東西時,我有空的方塊代替specil caracter,我想要解碼,當我用空格寫東西時我有錯誤,因爲空間的情況在我的代碼 –
這可能是您的空間錯誤的原因,但是您不使用新行分隔符。用'sc.nextLine()'替換'sc.next();',這將消耗整行輸入。 next()只在下一個空間消耗輸入。 – coolioasjulio