2012-02-13 15 views
2

私はこれを最も基本的な形に壊したと思う。そうでなければ私は謝罪し、それを編集しようとします。なぜ私のwhileループで、変数をStringに設定していればFirstNameのStringをキャストする必要がありますか?私は何か間違っているのですか?代わりにApprently私はのnextTokenを使用することができます():私は、などなぜこの文字列トークンは文字列にキャストされますか?

try 
      { 
       BufferedReader infileCust = 
         new BufferedReader(new FileReader("C:\\custDat.txt")); 
    } 
     catch(FileNotFoundException fnfe) 
      { 
       System.out.println(fnfe.toString()); 
      } 
      catch(IOException ioe) 
      { 
       System.out.println(ioe.toString()); 
      } 
     } 

     public static void createCustomerList(BufferedReader infileCust, 
       CustomerList custList) throws IOException 
    {  
     String FirstName; 
     String LastName; 
     int CustId; 


     //take first line of strings before breaking them up to first last and cust ID 
     String StringToBreak = infileCust.readLine(); 
     //split up the string with string tokenizer 
     StringTokenizer st = new StringTokenizer(StringToBreak); 

     while(st.hasMoreElements()){ 
     FirstName = (String) st.nextElement(); 
     LastName = (String) st.nextElement(); 
     CustId = Integer.parseInt((String) st.nextElement()); 

     } 

編集したテキストファイルの最初の単語であると考えられる最初のトークンと等しくなるように姓の変数を設定しようとしています。しかし、どのように私の変数は使用されていないとして表示されますか? whileループの対象外ですか?

答えて

4

これは、nextElementがObjectを返すためです。 nextTokenに電話すると、キャストする必要はありません。ドキュメントから

パブリックオブジェクトのnextElement()

は、その宣言された戻り値がオブジェクトではなく文字列であることを除いて、nextTokenメソッドと同じ値を返します。 これは、このクラスがEnumerationインターフェイスを実装できるように存在します。あなたは警告が変数が割り当てられますが、印刷されていない、保存、または何らかの方法で分析されていることになってしまう理由:使用されていない変数について

EDIT。姓と名義でwritelnに電話をかけた場合、警告は消えてしまいます。

+0

ありがとうございました!だからnextElementは区切り文字としてスペースも使用しますか? – Sackling

+0

また、あなたが私の編集を見ることができますか? – Sackling

+0

@Sacklingあなたの場合、空白文字 '" \ t \ n \ r \ f "'を使用します。コンストラクタに別のデリメータセットを渡すと、nextToken()とnextElement()の両方でこれらのデリミタが使用されます。 – dasblinkenlight

3

StringTokenizer.nextElementjava.lang.Objectを返します。ここでドキュメントを参照してください:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.htmlあなたが好きな場合は代わりにnextToken() : Stringを使用することができます。その 宣言戻り値は、このクラスが列挙インタフェースを実装することができるようにString.Itが存在するのではなくオブジェクトであることを除いnextTokenメソッドとして

関連する問題