0

現在、StringTokennizer クラスを使用して、定義された区切り文字によって文字列を別のトークンに分割しています。

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());
        }
    }
}
4

1 に答える 1

0

scanner.next()の代わりに次のトークンを返すために使用しscanner.nextLine()ます。これは、次の完全な行を返します (入力には 1 つしかありません)。もちろん、 の代わりにを使用hasNext()したいと思うでしょう。whilehasNextLine()

あなたのコメントに応えて:

あなたのコードには構文上の誤りがあります。これはもともとタイプミスであり、質問で修正されました。あなたが書いている:

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());
}
于 2012-04-08T05:12:23.820 に答える