0

私は、Caeser 暗号を暗号化および復号化するプログラムを作成する必要がある課題に取り組んでいます。私が問題を抱えているのは、暗号化または復号化ではなく、ユーザーが暗号化、復号化、または終了を選択できるようにメニューを提供する必要があるという要件のもう 1 つです。さらに、ユーザーが終了を選択するまで、プログラムは使用を促し続ける必要があります。これまでの私のコードは次のとおりです。

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

この Web サイトをご覧ください: 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 インスタンスを作成してみてください。簡単な解決策は、1 つのスキャナーを使用用にnextLine、もう 1 つのスキャナーを他のすべて用に用意することです。

過去に、 と に関してはスキャナーの使用に問題がありましたnextnextLine私にとっての治療法は、単純に のみを使用することに固執することでしnextLineた。

于 2012-12-10T12:04:57.517 に答える