我一直在改变它。而且,它一直在恶化。我无法弄清楚我做错了什么。从A-M,添加13.从M-Z,减去13.之前,至少我收到了回信。现在,他们符号。
import javax.swing.JOptionPane;
public class ExerciseE {
public static String rot13(String s) {
char value = 0;
char position = s.charAt(0);
String rev = "";
for (int i = 0; i < s.length(); i++) {
position = s.charAt(i);
if (position >= 65 && position <= 77) {
value = (char) (position + 13);
}
if (position >= 78 && position <= 90) {
value = (char) (position - 13);
} else {
}
rev = (rev + value);
}
return rev;
}
public static void main(String[] args) {
String s = JOptionPane.showInputDialog("Enter a phrase or sentence:");
s = s.toUpperCase();
System.out.println(rot13(s));
}
}
答案 0 :(得分:2)
您正在添加/减去value
而不是位置...
value = (char) (value + 13);
应该是
value = (char) (position + 13);
减法也是如此
答案 1 :(得分:0)
您需要使用position + 13
而不是value + 13
,并且类似于减法案例。
更大的情况是,你不应该在不知道为什么需要初始化的情况下初始化局部变量。通常,编译器将能够看到导致使用变量的每个路径都通过赋值。如果value
尚未初始化,则编译器会警告其使用。