有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用于控制台输入的Java Scanner类的替代方案

对于初级/中级程序员,除了使用Scanner类从控制台读取输入外,还有哪些替代方法

我昨天开始查找,谷歌带我看了一些关于自然语言处理的文章和一些自然语言处理工具包的列表。我发现的列表没有很好的注释,而且主题变得非常高级,非常迅速

我问这个问题是因为我开始想知道如何制作一个自定义的分隔符列表,比如“+”|“-“|”*“|”/”。这似乎不可能使用扫描仪


共 (3) 个答案

  1. # 1 楼答案

    你可以用BufferedReader和InputStreams来实现

    BufferedReader bufferRead = new BufferedReader(new InputStreamReader(System.in));

  2. # 2 楼答案

    听起来像是你在写一个解释器,想对传递的表达式求值

    我的建议是看看Flex,它将对你的输入进行词法分析,并将其转化为标记。然后看一下Gnu Bison,它将获取该标记集,并将它们解析为表达式树

    Flex和Bison将有效地在程序内部创建一个“迷你编译器”,并使用它来解析输入,但这将使您能够比使用Scanner更好地处理上下文敏感的事情

    TL;博士

    弹性:字符串->;代币

    野牛:代币->;表达式树

    你:表达树->;魔法

  3. # 3 楼答案

    I began to wonder about making a custom list of delimiters, such as "+" | "-" | "*" | "/". This doesn't appear to be possible using Scanner.

    你是在努力实现这样的目标吗

    String text="Some text +with -delimiters *described /above";
    Scanner in=new Scanner(text);
    in.useDelimiter("\\+|\\-|\\*|/"); // +,-,* are metacharacters in regex
                                      // to escape its special meaning we need 
                                      // to use "\\" before each of them
    int counter=0;
    while(in.hasNext())
        System.out.println(counter++ +") "+ in.next());
    

    输出

    0) Some text 
    1) with 
    2) delimiters 
    3) described 
    4) above