如果按下Esc,则打破循环

msc*_*c87 3 java loops break

我用JAVA语言编写了一个程序,它使用Scanner类接受来自控制台的输入....

现在我想在我的代码中添加此功能,以便在用户按下Esc Button时存在循环(while).到目前为止,我认为键盘类可以帮助我,但它就像扫描仪...我试图使用事件,但不知道如何正确使用它们....

源代码:

    package switchCase_v1;

     import cs1.Keyboard;
     import java.util.EventObject;
     import java.awt.AWTEvent;
     import java.awt.event.KeyEvent;
     import java.awt.event.ComponentEvent;
     import java.awt.event.InputEvent;
     import java.util.*;

      public class SwithCase {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner input = new Scanner(System.in);
        System.out.println("enter the name or number of month: ");
        int monthNumber = input.nextInt();

        while (true) {
            KeyEvent button;
            if (button.getKeyCode() == 27)
                break;
            else if (monthNumber == '\n') {
                System.out.println("enter a number");
                monthNumber = input.nextInt();
            } else {
                switch (monthNumber) {
                case 1:
                case 2:
                case 3:
                case 4:
                case 5:
                case 6:
                    System.out.println("it has 31 days");
                    monthNumber = input.nextInt();
                    break;
                case 7:
                case 8:
                case 9:
                case 10:
                case 11:
                case 12:
                    System.out.println("it has 30 days");
                    monthNumber = input.nextInt();
                    break;
                default:
                    System.out.println("it is not a valid number");
                    monthNumber = input.nextInt();
                    break;
                }
            }

        }
    }
  }
Run Code Online (Sandbox Code Playgroud)

当我想考虑像"Esc"或"Enter"这样的按键时,我如何处理案件?我认为它也适用于使用ASCII码.

这是我的代码的新版本:

public static void main(String[] args) {
    // TODO Auto-generated method stub

    Scanner input = new Scanner(System.in);
    System.out.print("Check number of days");
    KeyEvent e;
    if (e.getKeyCode() == KeyEvent.VK_ENTER)
    {
    System.out.println("enter the name or number of month: ");
    int monthNumber=input.nextInt();
    }
    else if (Keyboard.getEventKey()==Keyboard.KEY_ESCAPE)
    {
        System.out.println("GoodBye");
    }
    }   
Run Code Online (Sandbox Code Playgroud)

}

但它有一个错误,说e对象可能没有被初始化...... !!!!!我该怎么办?!!!

Aar*_*oup 6

您目前正在制作一个命令行应用程序,它从标准输入读取内容并将内容打印到标准输出.处理按钮的方式完全取决于运行程序的终端,大多数终端在按下转义时不会向应用程序的stdin发送任何内容.

如果要捕获关键事件,则必须使用AWT或Swing创建GUI应用程序.如果您只想在程序运行时终止程序,请尝试按Ctrl + C(这适用于大多数终端).