2012-02-26 172 views
3

我有以下代码片段。我不明白为什么它不工作。Java读取文本文件并将其存储为数组

我真的很感谢这方面的帮助。

import java.util.Scanner; 
import java.io.*; 

class ReadFiles { 
    String [] codes = new String[99]; 
    int i = 0; 

    private Scanner readCodes; 

    public void openCodesFile() { 
     try { 
      readCodes = new Scanner(new File("C:/Users/Carlo/Desktop/Files/codes.txt")); 
     } catch (Exception e) { 
      System.out.println("Could not locate the data file!"); 
     } 
    } 

    public void readCodesFile() { 

     while(readCodes.hasNext()) { 
      codes[i] = readCodes.nextLine(); 
      i++; 
      System.out.println(codes[i]); 
     } 
    } 

    public void closeCodesFile() { 
     readCodes.close(); 
    } 
} 

class NewHardware { 
    public static void main(String[] args) { 
     ReadFiles codesRead = new ReadFiles(); 
     codesRead.openCodesFile(); 
     codesRead.readCodesFile(); 
     codesRead.closeCodesFile(); 
    } 
} 

输出打印出“null”一堆。

此外,我希望不仅能够打印出代码,还能够使用NewHardware类中的代码数组并对其进行处理(打印出来,截断它等)。

我在想这样做与readCodesFile()如下:

public String readCodesFile() { 

     while(readCodes.hasNext()) { 
      codes[i] = readCodes.nextLine(); 
      i++; 
      System.out.println(codes[i]); 
     } 
        return (codes[i]); 
    } 

或者什么,但它没有工作,只是还没有。我在正确的轨道上吗?

哦,只是想补充文本包含以下内容:

G22 
K13 
S21 
I30 
H15 
N23 
L33 
E19 
U49 

编辑:

由于托尼和下面丘尔克古尔马帮助我与我的愚蠢。我接受托尼的答案基本上是因为他挑战我思考,但丘尔克的答案同样重要。

对于我的问题(其中我问了一下能在课堂上NewHardware使用它)的第二部分,我做了以下内容:

class NewHardware { 
    public static void main(String[] args) { 
     ReadFiles codesRead = new ReadFiles(); 

     codesRead.openCodesFile(); 

     codesRead.readCodesFile(); 

     for (int i = 0; i < 9; i++) { 
      System.out.println("\n\n" + codesRead.codes[i]); 
     } 

     codesRead.closeCodesFile(); 
    } 
} 

这当然不是最后的程序代码,但是这帮助我理解了基本想法。希望这也能帮助其他人。

+1

+1做的工作,并提出一个连贯的问题代码。 – 2012-02-26 05:57:40

回答

1

仔细看看你的readCodesFile()方法。看看每一行。它在做什么?你能解释给我们吗?

+0

那么,我希望它会将文本文件中的代码添加到数组中。我对此很陌生,从来没有做过,所以我不能真正理解我做错了什么。我知道有什么不对,但只是不知道它是什么。因此,我在这里发布了它以获得某种方向。 – 2012-02-26 05:57:45

+0

好吧,“codes [i] = readCodes.nextLine();”读取一行并将其阻塞为代码[i]。然后“i ++”递增索引。现在使用println会发生什么? – 2012-02-26 05:59:48

2
codes[i] = readCodes.nextLine(); 
      i++; 
      System.out.println(codes[i]); 

您打印[我++]

+1

把你的i ++放在System.out.println(codes [i])后面; – Churk 2012-02-26 06:04:31

+0

感谢您的回答,我明白了下面的Tony是因为Tony,然后阅读您的回答和评论。 – 2012-02-26 06:09:00

相关问题