为什么这个字符串标记器使我转换为字符串?

时间:2012-02-13 00:03:25

标签: java stringtokenizer

我认为我将其分解为最基本的形式。如果没有,那么我道歉并将尝试编辑它。为什么在我的while循环中,如果我已经将变量设置为String,我需要为FirstName强制转换String?难道我做错了什么?我尝试将FirstName变量设置为等于第一个标记,该标记应该是文本文件的第一个单词等。

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

        }

编辑:显然我可以使用nextToken()代替。但是为什么我的变量显示为未使用?它们不在while循环的范围内吗?

3 个答案:

答案 0 :(得分:5)

这是因为nextElement返回Object。如果你致电nextToken,则无需投票。

来自文档:

  

public Object nextElement()

     

返回与nextToken方法相同的值,除了它声明的返回值是Object而不是String。 它存在,以便此类可以实现Enumeration接口。

编辑关于未使用的变量:您收到警告的原因是变量已分配,但未以某种方式打印,保存或分析。如果您使用名字和姓氏添加呼叫,例如writeln,警告就会消失。

答案 1 :(得分:3)

因为StringTokenizer.nextElement返回java.lang.Object。请参阅此处的文档:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/StringTokenizer.html如果您愿意,可以使用nextToken() : String

答案 2 :(得分:2)

因为StringTokenizer.nextElement()返回

  

与nextToken方法相同的值,除了它   声明的返回值是Object而不是String.It存在,以便此类可以实现Enumeration接口。