关于扫描仪类

时间:2012-04-08 05:06:05

标签: java

我目前正在使用StringTokennizer类将String拆分为不同的标记,如定义的分隔符所示。

public class App {  
    public static void main(String[] args) {  

        String str = "This is String , split by StringTokenizer, created by Neera";  
        StringTokenizer st = new StringTokenizer(str);  


        System.out.println("---- Split by comma ',' ------");  
        StringTokenizer st2 = new StringTokenizer(str, ",");  

        while (st2.hasMoreElements()) {  
            System.out.println(st2.nextElement());  
        }  
    }  
}  

我的查询是,同样的事情也可以通过扫描仪类来实现...... !!这是使用扫描仪类的正确方法,因为我正在读取扫描程序类允许您从循环内标记数据,这允许您随时停止...我已经尝试了以下的事情,但它没有'工作......请告诉我.. !!!

public class App1 {  

    public static void main(String[] args)    
    {  
        Scanner scanner =  new Scanner("This is String , split by StringTokenizer, created by Neera").useDelimiter(", ");    

        while (scanner.hasNextLine()) { 
            System.out.println(scanner.nextLine());
        }
    }
}

1 个答案:

答案 0 :(得分:0)

使用scanner.next()返回下一个令牌,而不是scanner.nextLine(),它返回下一个完整行(并且您的输入只有一个)。当然,您希望在hasNext()而不是while中使用hasNextLine()

回复您的评论:

您的代码有一个语法错误,我最初用于拼写错误并在问题中进行了更正。你在写:

while (scanner.hasNext()) ;
    System.out.println(scanner.next());

哪种格式正确应该告诉你实际发生了什么:

while (scanner.hasNext())
    ; // empty statement
System.out.println(scanner.next());

应该是:

while (scanner.hasNext()) {
    System.out.println(scanner.next());
}