0

我正在做一个任务,我必须编写一个程序来加密和解密凯撒密码。我遇到的问题不是加密或解密,而是另一个要求,即我必须提供一个菜单,以便用户可以选择加密、解密或退出。此外,程序应该一直提示用户,直到用户选择退出。到目前为止,我的代码是:

import java.util.*;
public class CaeserShiftTester
{
    public static void main (String[] args)
    {
        Scanner in = new Scanner(System.in);
        String choice = "";

        while (!choice.equalsIgnoreCase("C"))
        {

        System.out.println("\nPlease select an option");
        System.out.println("[A] Encrypt Code");
        System.out.println("[B] Decrypt Code");
        System.out.println("[C] Quit");

        choice = in.next();

        if(choice.equalsIgnoreCase("A"))
        {
            System.out.println("Please enter your key:");

            final int KEY = in.nextInt();
            System.out.println(CaeserShiftEncryption.shiftAlphabet(KEY));

            System.out.println("\nPlease enter your message:");
            String message = in.nextLine();

            System.out.println(CaeserShiftEncryption.encryptCode(message,KEY));


        }

        if(choice.equalsIgnoreCase("C"))
        {
            System.out.println();
        }
    }


    }

}

我的问题是,在屏幕上打印出“新字母”之后,程序会循环回到最开始,要求用户选择 a、b 或 c。用户永远没有机会输入要加密的消息。不幸的是,我需要打印出生成的新字母表,我想不出这里可能有什么问题。我希望你们能帮助我。

此外, shiftAlphabet 和 encryptCode 方法都是功能齐全的。

4

2 回答 2

1

看看这个网站:http ://www.java-made-easy.com/java-scanner.html

特别

不要尝试使用 nextLine() 扫描文本;在使用 nextInt() 和相同的扫描仪之后!它不适用于 Java Scanner,许多 Java 开发人员选择只使用另一个 Scanner 来处理整数

于 2012-12-09T04:37:25.537 回答
0

Scanner混合不同类型的扫描然后将相同的 Scanner 实例与nextLine.

当您遇到此类问题时,请尝试创建一个新的 Scanner 实例。一个简单的解决方法是让一个扫描仪用于使用nextLine,另一个用于其他一切。

过去我在使用扫描仪时遇到过问题,nextnextLine对我来说,解决方法就是坚持只使用nextLine.

于 2012-12-10T12:04:57.517 回答