0

現在、ターミナルでコマンドプロンプトを使用してペンを制御し、Java で描画ツールを構築しようとしています。

これまでのところ、ペンに移動、回転などを指示するコマンドを実装することができました。今、プログラムをカラー コマンドに応答させようとしています。次に、スキャナーを入れて次の単語を読み取ろうとしました。 . 私が含めたコードの例では、スキャナーに「赤」という単語を検出させ、ペンの色を変更させようとしました (その方法は「ペン」クラスに保持されています)。

したがって、理想的にはターミナルで次のように入力します。

colour red

...結果のアクションを取得して、ペンの色を赤に変更します。

繰り返しますが、事前に提供できるヘルプについて。あなたが助けることができる前に知っておくべきことが他にあれば、私に知らせてください!

 /**
 * Allow the user to draw on the canvas by typing commands.
 */
public void draw()
{   
    boolean finished = false;

    printWelcome();
    printPenLocation();
    while(!finished) {
        LinkedList<String> command = reader.getInput();
        if(!command.isEmpty()) {
            String firstWord = command.get(0);
            switch(firstWord) {
    //Had more examples of case commands here, such as "move", "help", etc ...
                case "colour":
                    Scanner scannerC = new Scanner(System.in);
                    String colour = scannerC.nextLine();
                    if (scannerC.nextLine().equalsIgnoreCase("red"))
                    {
                         pen.setColor(Color.RED);    
                    }
                    else {
                        System.out.println("Unrecognised colour!");
                    }
                    break;
                default:
                    System.out.println("Unrecognised command: " + firstWord);
                    break;
            }
        }
    }
}

結果のコードは正しくコンパイルされ、エラーは発生しませんが、ペンの色は変わりません! 私のコードを批評してくれる専門家の目があればありがたいです。

4

2 に答える 2

0

これはコードの間違いです

String colour = scannerC.nextLine();
if (scannerC.nextLine().equalsIgnoreCase("red"))
{
 pen.setColor(Color.RED);    
}

でなければならない場合colour.equalsIgnoreCase("red")

String colour = scannerC.nextLine();
if (colour.equalsIgnoreCase("red"))
{
 pen.setColor(Color.RED);    
}

if 条件で再度呼び出すとscannerC.nextLine();、実際にはユーザー入力が破棄されるため...

于 2016-11-29T13:01:32.460 に答える