Newb问题:在java中传递对象?

时间:2010-06-17 01:16:32

标签: java object

我是java新手。我正在做以下事情:

从文件中读取,然后将数据放入变量。

我已将checkToken和lineToken声明为该类下的公共字符串。

    public static void readFile(String fromFile) throws IOException {
    BufferedReader reader = new BufferedReader(new FileReader(fromFile));
          String line = null;
          while ((line=reader.readLine()) != null )  {
          if (line.length() >= 2) { 
               StringTokenizer lineToken = new StringTokenizer (line);
               checkToken = lineToken.nextToken();
               processlinetoken()
               ......

但这是我遇到问题的地方。

     public static void processlinetoken()
          checkToken=lineToken.nextToken();
     }

它失败了。

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
 The method nextToken() is undefined for the type String

 at testread.getEngineLoad(testread.java:243)
 at testread.readFile(testread.java:149)
 at testread.main(testread.java:119)

那么如何才能让它发挥作用?它似乎传递了变量,但没有任何后续。的工作原理。

Eclipse IDE没有多大帮助“链接本地重命名的所有引用(不会更改  其他文件中的引用)“在文件中重命名是唯一的选择。它没有做任何事情。

3 个答案:

答案 0 :(得分:2)

似乎lineTokenString而不是StringTokenizer。您可能已将String lineToken声明为您班级的属性,并且您计划使用它,但在readFile方法中您指定给lineToken一个new StringTokenizer(),但您的定义是本地和阴影你正在做的那个。

您应该尝试从

中删除StringTokenizer
StringTokenizer lineToken = new StringTokenizer (line);

只是做

lineToken = new StringTokenizer(line);

答案 1 :(得分:0)

您正尝试在testread.java的第243行的字符串上调用nextToken()。如果您使用的是IDE,它应该会向您显示问题。

答案 2 :(得分:0)

谢谢杰克。

我声明了一个公共静态String,但后来是readFile()中的StringTokenizer。因此,当调用ProcessLineToken()时,它正在查看null String变量,而不是在readFile()中声明的StringTokenizer。

我误解了StringTokenizer的使用。这是一种类型,而不是扩展。