私はJavaが初めてで、それを学んでいます。ユーザー入力を取得してトークン化するコードを作成しました。コンパイルは成功しますが、実行すると o/p として「-3」が生成されます。
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.");
}
}
}
また、新しい StreamTokenizer(name) を使用すると、「エラー: StreamTokenizer(String) に適したコンストラクターが見つかりません」というエラーがスローされます
while(token.nextToken()!= token.TT_EOF) を使用すると、無限ループが o/p として -1 であることが示されます
以下のコードは問題なく動作します:
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/
ありがとうガウラフ