java - Java 中的流分词器 : Trying to implement

标签 java

我是 Java 新手,正在学习它。我编写了一段代码来获取用户输入并将其标记化。它编译成功,但运行时生成 '-3' 作为 o/p。

import java.io.*;


public class TokenTester{

    public static void main(String[] arguments){
    String name;
    StreamTokenizer token;
    BufferedReader reader;
    reader = new BufferedReader(new InputStreamReader(System.in));

     try{
            System.out.println("Enter a String  ");
            name = reader.readLine();
            System.out.println(name);
            token=new StreamTokenizer((new StringReader(name)));
           //token=new StreamTokenizer(name);
            // Using new StreamTokenizer(name) throws error
            //error: no suitable constructor found for StreamTokenizer(String)
             while(token.nextToken()!= token.TT_EOF)
            {
             System.out.println(token.nextToken());
                }
            }
        catch (IOException ioe){
             System.out.println("An unexpected error occured.");
        }

        }
    }

当我使用 new StreamTokenizer(name) 时也会抛出错误 “错误:没有找到适合 StreamTokenizer(String) 的构造函数”

当我使用 while(token.nextToken()!= token.TT_EOF) 时 它显示无限循环为 -1 作为 o/p

下面的代码工作得很好:

import java.util.StringTokenizer;

 class TokenTester {

 public static void main(String[] arguments) {
 StringTokenizer st1, st2;

 String quote1 = "VIZY 3 -1/16";
 st1 = new StringTokenizer(quote1);
 System.out.println("Token 1: " + st1.nextToken());
 System.out.println("Token 2: " + st1.nextToken());
 System.out.println("Token 3: " + st1.nextToken());

 String quote2 = "NPLI@9 27/32@3/32";
 st2 = new StringTokenizer(quote2, "@");
 System.out.println("\nToken 1: " + st2.nextToken());
System.out.println("Token 2: " + st2.nextToken());
System.out.println("Token 3: " + st2.nextToken());
 }
 }

我无法找出代码中的问题。 请指导。

我已经提到:

http://tutorials.jenkov.com/java-io/streamtokenizer.html
http://www.java-samples.com/showtutorial.php?tutorialid=397
http://docs.oracle.com/javase/7/docs/api/

谢谢 高拉夫

最佳答案

在第一个示例中,您使用 StreamTokenizer,在第二个示例中使用 StringTokenizer。因此,在第一个示例中,为了使其可行,您应该将 StreamTokenizer 替换为 StringTokenizer。当然,您应该使用与 StringTokenizer 相关的适当方法。

关于java - Java 中的流分词器 : Trying to implement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14630089/

相关文章:

java - 如何根据 RFC 2231 对文件名进行编码?

java - 为什么它在字符串中返回错误的重复次数?

java - SAXParser 无法正确读取 org.w3c.dom.Document 到 java.io.InputStream 的转换

java - Lambda 表达式和匿名类之间的实现差异/优化

java - Spring JMS 监听器未连接到 ActiveMQ

java - 将pdf文件添加到swing java中的jeditorpane中

java - 尽可能快地通过java读取具有数百万行的csv文件

java - 配置单元仅创建 2 列

java - 在错误的位置绘制文本

java - java中的多线程(两个线程广泛使用notify()和wait())