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

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

问题描述:

我是新来的java。我正在做以下操作:Newb问题:在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没有太大的帮助”链接所有引用为本地重命名(不会更改 其他文件中的引用)“在文件中重命名是唯一的选项。它什么都不做。

+0

你能发布更多的代码吗?看起来像processlinetoken()方法调用的'lineToken'不是'StringTokenizer',而是'String'。但很难看到。 – 2010-06-17 01:20:21

+0

分裂你的代码片段和发布片断,因为你已经做了很混乱。如果你编辑你的问题,以更好地展示这两种方法,那就更好了。 – 2010-06-17 01:20:30

+0

我重组后使其更加明显。 – 2010-06-17 01:36:34

看起来好像是lineTokenString而不是StringTokenizer。可能你宣布String lineToken作为你班级的一个属性,你计划使用它,但在readFile方法中,你分配给lineToken a new StringTokenizer()但你的定义是本地的,并且会影响你正在做的。

您应该通过删除StringTokenizer

StringTokenizer lineToken = new StringTokenizer (line); 

尝试只是做

lineToken = new StringTokenizer(line); 
+0

谢谢。这做到了。 我在声明公共字符串。而不是公共StringTokenizer。我不知道有什么区别。我认为StringTokenizer是String的扩展。 \t public static StringTokenizer lineToken; \t public static String checkToken; – 2010-06-17 01:58:08

你试图调用nextToken()上一个字符串上testread.java的243线。如果您使用IDE,它应该会显示您的问题。

+0

它说“\t方法nextToken()未定义类型字符串” 它没有在readFile方法中说这个,但是当我去processlinetoken()它不通过。这是我的问题。为什么它给我这个信息? – 2010-06-17 01:34:45

+0

它说:“链接本地重命名的所有引用(不会更改 其他文件中的引用)”,那么它使我可以选择重命名。 但它不起作用。 – 2010-06-17 01:35:35

谢谢杰克。

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

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