我的程序的输出是“ Afmmz Ampq”。它应该是“ Cfmmz Gmpq”。这只用大写字母出现,因此应该来自编程的这一部分。
char newLetter=alphabet.charAt(newLetterIndex);
if (Character.isUpperCase(letter)==true){
char upper = Character.toUpperCase(newLetter);
newLetter=upper;
这是上下文的完整代码
public static void main(String[] args) {
String word= ("Belly Flop");
int x=1; //decoding variable, for Captain Crunch it is 13
crunch (word, x);
}
public static void crunch(String word,int x) {
String alphabet= ("abcdefghijklmnopqrstuvwxyz");
int index=0;
while (index<word.length()) {
char letter=word.charAt(index);
if (letter==' ') {
System.out.print (" ");
index++;
} else {
int letterIndex=alphabet.indexOf(letter);
int newLetterIndex=letterIndex+x;
if (newLetterIndex>25){
newLetterIndex=newLetterIndex-25;
}
if (newLetterIndex<0){
newLetterIndex=newLetterIndex+25;
}
char newLetter=alphabet.charAt(newLetterIndex);
if (Character.isUpperCase(letter)==true){
char upper = Character.toUpperCase(newLetter);
newLetter=upper;
}
System.out.print (newLetter);
index++;
}
}
}
答案 0 :(得分:0)
我稍微改变了你的
boolean isUpper = Character.isUpperCase(letter);
int letterIndex=alphabet.indexOf(Character.toLowerCase(letter));
int newLetterIndex=letterIndex+x;
if (newLetterIndex>25){
newLetterIndex=newLetterIndex-25;
}
if (newLetterIndex<0){
newLetterIndex=newLetterIndex+25;
}
char newLetter=alphabet.charAt(newLetterIndex);
if (isUpper){
char upper = Character.toUpperCase(newLetter);
newLetter=upper;
}
System.out.print (newLetter);
index++;
当找到大写字母时,应该先转换成小写字母
答案 1 :(得分:0)
如果我对您的理解正确,那么您想要做的就是将字母移动1。 这意味着:a-> b,b-> c,...,z-> a,A-> B,B-> C,...,Z-> A
您的代码和大写字母的问题是此行:
int letterIndex=alphabet.indexOf(letter);
当您在'A'
中搜索String alphabet= ("abcdefghijklmnopqrstuvwxyz");
时,结果始终为0。原因是找不到字符'A'
。
在上述行中使用Character.toLowerCase()
时可以解决此问题,
char letterLowerCase = Character.toLowerCase(letter);
int letterIndex=alphabet.indexOf(letterLowerCase);
除此之外:
以下是您的紧缩方法的另一种版本:
public static void crunch(String word,int x) {
String alphabet= ("abcdefghijklmnopqrstuvwxyz");
for(int i = 0; i < word.length(); i++) {
if (word.charAt(i)==' ') {
System.out.print (" ");
} else {
int letterIndex=alphabet.indexOf(Character.toLowerCase(word.charAt(i)));
int newLetterIndex= (letterIndex+x)%25;
if (newLetterIndex<0){
newLetterIndex=newLetterIndex+25;
}
char newLetter=alphabet.charAt(newLetterIndex);
if (Character.isUpperCase(word.charAt(i))==true){
newLetter=Character.toUpperCase(newLetter);
}
System.out.print (newLetter);
}
}
}