&引用;“加密”;Java练习
我正在做一个练习,我需要将字符串中的字母替换为另一个字母(字母表中它前面的第四个字母)。我还必须消除除空格(“”)以外的任何非字母字符。到目前为止,我能够完成第一步(消除字符),但我无法替换字母。这是我的代码,它的最后一部分肯定不允许我正确替换字母,你知道我做错了什么吗 提前谢谢&引用;“加密”;Java练习,java,Java,我正在做一个练习,我需要将字符串中的字母替换为另一个字母(字母表中它前面的第四个字母)。我还必须消除除空格(“”)以外的任何非字母字符。到目前为止,我能够完成第一步(消除字符),但我无法替换字母。这是我的代码,它的最后一部分肯定不允许我正确替换字母,你知道我做错了什么吗 提前谢谢 import java.util.Scanner; public class Crypto { static final String ALPHABET = "abcdefghijklmnopqrstuvw
import java.util.Scanner;
public class Crypto {
static final String ALPHABET = "abcdefghijklmnopqrstuvwxyz";
static final int DECALAGE = 4;
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
System.out.println("Veuillez entrer une chaine de caracteres : ");
String s = scanner.nextLine();
// la chaine a coder
String aCoder = "";
// la chaine codee
String chaineCodee = "";
char [] ALPHA = new char [26];
for (int i = 0; i < ALPHA.length; i++)
{
ALPHA[i] = ALPHABET.charAt(i);
}
for (int j = 0; j < s.length(); j++)
{
char a = s.charAt(j);
if (Character.isLetter(a) || a==' ')
{
aCoder += a;
}
aCoder.length();
for(int i =0; i<aCoder.length(); i++)
{
char f = aCoder.charAt(i);
if (Character.isLetter(f))
{
int aide = ALPHABET.indexOf(aCoder.charAt(i));
if (aide < 21)
{char ajout = ALPHABET.charAt(aide + DECALAGE);
chaineCodee = chaineCodee + ajout;
}
else {
char ajout2 = ALPHABET.charAt(aide - 22);
chaineCodee = chaineCodee + ajout2;
}
}
else{
chaineCodee = chaineCodee + " ";
}
}
}
System.out.format("La chaine initiale etait : '%s'\n", s);
if (aCoder.isEmpty()) {
System.out.println("La chaine a coder est vide.\n");
} else {
System.out.format("La chaine a coder est : '%s'\n", aCoder);
System.out.format("La chaine codee est : '%s'\n", chaineCodee);
}
}
}
import java.util.Scanner;
公开类密码{
静态最终字符串字母表=“abcdefghijklmnopqrstuvxyz”;
静态最终整数贴花=4;
静态扫描仪=新扫描仪(System.in);
公共静态void main(字符串[]args){
System.out.println(“Veuillez enter une chaine de caracteres:”);
字符串s=scanner.nextLine();
//编码员
字符串aCoder=“”;
//拉查恩科德酒店
字符串chaineCodee=“”;
字符[]α=新字符[26];
for(int i=0;i for(int i=0;i您的问题在于嵌套for循环的方式
每次通过外部循环时,您都会设置aCoder
的下一个字符,然后迭代aCoder
并对其进行整体编码,从而在构建chaineCodee
时为您提供一种“圣诞十二天”输出
当我使用您的程序编码“fnord”
,而不是“jrsvh”
,我得到的是“jjrsjrsvjrsvh”
(“j”+“jr”+“jrs”+“jrsv”+“jrsvh”
)
不要像这样嵌套循环:
for (int j = 0; j < s.length(); j++) {
char a = s.charAt(j);
if (Character.isLetter(a) || a == ' ') {
aCoder += a;
}
for (int i = 0; i < aCoder.length(); i++) {
char f = aCoder.charAt(i);
if (Character.isLetter(f)) {
int aide = ALPHABET.indexOf(aCoder.charAt(i));
if (aide < 21) {
char ajout = ALPHABET.charAt(aide + DECALAGE);
chaineCodee = chaineCodee + ajout;
} else {
char ajout2 = ALPHABET.charAt(aide - 22);
chaineCodee = chaineCodee + ajout2;
}
} else {
chaineCodee = chaineCodee + " ";
}
}
}
for(int j=0;j
只需将内部循环移到外部,并在构建完成后对源字符串进行编码:
for (int j = 0; j < s.length(); j++) {
char a = s.charAt(j);
if (Character.isLetter(a) || a == ' ') {
aCoder += a;
}
}
for (int i = 0; i < aCoder.length(); i++) {
char f = aCoder.charAt(i);
if (Character.isLetter(f)) {
int aide = ALPHABET.indexOf(aCoder.charAt(i));
if (aide < 21) {
char ajout = ALPHABET.charAt(aide + DECALAGE);
chaineCodee = chaineCodee + ajout;
} else {
char ajout2 = ALPHABET.charAt(aide - 22);
chaineCodee = chaineCodee + ajout2;
}
} else {
chaineCodee = chaineCodee + " ";
}
}
for(int j=0;j
Wow,非常感谢!这是我在StackOverFlow上的第一篇帖子,我刚开始编写代码,我必须告诉你我在这里被阻止了。你真的让我开心!非常感谢!Francis Langlois