通过终端更改 Java 中的笔的颜色

Changing the colour of a pen in Java via terminal

我目前正在尝试在 Java 中构建一个绘图工具,在终端中使用命令提示控制一支笔。

到目前为止,我已经能够执行命令让笔移动、转动等。现在,我试图让我的程序响应颜色命令,然后我尝试安装扫描仪阅读下一个单词。在我包含的代码示例中,我尝试让扫描仪检测单词 "red",然后更改笔的颜色(该方法保留在 "Pen" class 中) .

所以,理想情况下,我想在终端中输入:

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;
            }
        }
    }
}

生成的代码编译正确并且没有抛出任何错误,但它不会改变笔的颜色!如果有一双专家的眼睛来批评我的代码,我将不胜感激。

这是代码中的一个错误

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(); 实际上会丢弃用户输入...

我只能猜测这段代码之外的代码做了什么,但这里有一个建议:

我的猜测是 reader 将输入字符串解析为 space 分隔列表。如果是这样,您应该像这样在命令中的第二项上切换颜色:

switch(command.get(1).toLowerCase){
case "red":
    ...
case "blue":
    ...
...
default:
    System.out.println("Unrecognized color");
}

也就是说,如果您键入 "color red" 并希望颜色发生变化。如果不是,则错误可能出在其他地方,或者颜色更改代码一开始就不是 运行。使用 system.out.println 找出代码的哪一部分 运行

这是我在phone等公交车时发的,所以我为可能的疏忽道歉

编辑:看到其他答案后,只需结合我们的两个更正即可解决此问题