键入时使用Java扫描仪检查输入

键入时使用Java扫描仪检查输入,java,Java,我试图找到一种在键入时检查用户输入的方法,这样如果他们键入特殊字符(“#”),执行将立即终止,而无需按Enter键(使用Java Scanner),我尝试了这段代码,但每次都需要按Enter键。我找不到一种方法 我非常感谢你的帮助 import java.util.Scanner; public class test{ public static void main(String[] args) { Scanner scan =new Scanner(Syst

我试图找到一种在键入时检查用户输入的方法,这样如果他们键入特殊字符(“#”),执行将立即终止,而无需按Enter键(使用Java Scanner),我尝试了这段代码,但每次都需要按Enter键。我找不到一种方法 我非常感谢你的帮助

import java.util.Scanner;
public class test{

    public static void main(String[] args) {

            Scanner scan =new Scanner(System.in);

            while (true) {
                String input =scan.next();
                if (input.equals("#")) {
                    break;
                }

                System.out.println("yes");


            }
    }
}

输入特殊字符时,可以逐字节读取并停止读取

例如:

char key;
do{
   key = scanner.nextByte() // be careful with encoding. utf-8 may use 2 bytes per symbol
   //do stuff
}while(key != '#')

尝试逐字符读取输入字符。大概是这样的:

Scanner reader=新的扫描仪(System.in);
char c=reader.next().charAt(0);
如果(c='#')
{
//终止执行
}

您可以试试这个。System.in.read()将读取输入的字符。如果输入的字符为#,则可以终止执行。如果用户输入了enter键,则可以使用whitespace()方法中断循环

char arr[] = new char[100];
for(int i=0;i<100;i++) {
    arr[i] = (char)System.in.read();
    if (arr[i].equals("#")) {
        System.exit(1);
}
if(arr[i].isWhitespace()){
break;
}

}
char arr[]=新字符[100];

对于(int i=0;i到目前为止您尝试了什么?@Rd_x,-不要在评论中发布代码。用格式化的代码更新您的问题,这样每个人都可以阅读代码。这可能会让您感到惊讶,因为这很难做到。我不确定是否有nextChar()方法,它与next()相同吗?是的,它应该是next()。charAt(0)。记错了。代码已更新。恐怕这只读取第一个字符。这可能是您要查找的:它会导致编译错误(无法对基元类型char调用equals(Sting))和(无法对基元类型char调用isWhitespace()).我试图更改.equals to==和isWhitespace to=''。它工作正常,但需要按enter键:(是的System.in.read()方法即使未按enter键也会读取字符。一旦用户按enter键,就可以用空格检测到它。我以前从未使用过字节,但它给了我一个错误(类型不匹配:无法将字节转换为字符)试试扫描仪。下一步。。。