1

我一直在改变它。而且,它只会越来越糟。我无法弄清楚我做错了什么。从AM,加13。从MZ,减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));     
    }

}
4

2 回答 2

2

您正在从value非位置添加/减去...

value = (char) (value + 13);

应该是

value = (char) (position + 13);

减法也是如此

于 2015-02-13T05:09:08.037 回答
0

您需要使用position + 13而不是value + 13,并且对于减法情况类似。

更大的图景是,您永远不应该在不知道为什么需要初始化的情况下初始化局部变量。通常,编译器将能够看到导致使用变量的每条路径都经过赋值。如果value没有被初始化,编译器会警告它的使用。

于 2015-02-13T05:09:03.487 回答