2014-02-21 54 views
0

我正在为一个类做一个项目,但对于我来说,我最难搞清楚如何从文件中读取文本。我们必须制造一个交通信号灯,排队来自北,南,东,西的卡车和汽车。自从我做了任何编码已经很长时间了,所以我非常挣扎。我认为它只是读取内存位置。这是我读取文件的代码。在java中读取文件的问题

package Project1; 
import java.io.*; 
import java.util.*; 


public class TrafficSim { 

public String input; 

public TrafficSim(String input) 
{ 
    this.input = input; 
    readFromFile(); 
} 



private boolean readFromFile() 
{ 
    File inputText = new File("input1.txt"); 

    try 
    { 
     Scanner scan = new Scanner(inputText); 

     while(scan.hasNextLine()) 
     { 
      String direction = scan.nextLine(); 
      int num = scan.nextInt(); 
     } 
    } 
    catch(FileNotFoundException e) 
    { 
     e.printStackTrace(); 
    } 
    return false; 
} 



public static void main(String[] args) { 
    // TODO Auto-generated method stub  
    TrafficSim sim = new TrafficSim("input1.txt"); 
     System.out.println(sim);  
} 

} 
+0

您需要覆盖TrafficSim类中的'toString()'方法。 –

+0

所以我必须做一个toString()方法?类似于public String toString(){str =“”; System.out.println()} – user2161813

+1

'System.out.println(sim)'将调用'sim'对象上的'toString()'方法(继承自'Object'类),因为你没有重写它具有默认的输出实现('getClass()。getName()+'@'+ Integer.toHexString(hashCode())')。 –

回答

2

你的方法readFromFile确实从文件中读取了足够的数据,但它没有做任何事情。你所做的只是一行一行地读取,在你的while循环的每次迭代之后将一行文本和一个int存储在变量中,这些变量被遗忘了。

您的代码System.out.println(sim)会打印出您类的toString方法返回的任何内容,并且由于您未覆盖该方法,因此它将打印出Object.toString的结果,这不是您想要的结果。

简而言之,您正在阅读文件,但您对所阅读的内容没有做任何处理。

+0

我讨厌成为一个痛苦,但我并不确定如何解决这个问题。我完全失去了。 – user2161813

+0

的要点是,你的'readFromFile'方法从一个文件逐行读取,但这就是它的全部功能。它读取每一行并忘记每一行。它不会**处理**每一行来处理它。 – ktm5124

+0

好的。我明白,但我该如何解决它? – user2161813

0

这里是我会做什么....

public class TrafficSim { 

    private String input; 
    private String content; 

    public TrafficSim(String input) { 
     this.setInput(input); 
     this.setContent(readFromFile()); 
    } 

    private String readFromFile() { 
     File inputText = new File(input); 
     StringBuilder sb = new StringBuilder(); 

     try { 
      Scanner scan = new Scanner(inputText); 
      while (scan.hasNextLine()) { 
       sb.append(scan.nextLine()); 
      } 
      scan.close(); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
     } 

     return sb.toString(); 
    } 

    public String getContent() { 
     return content; 
    } 

    public void setContent(String content) { 
     this.content = content; 
    } 

    public String getInput() { 
     return input; 
    } 

    public void setInput(String input) { 
     this.input = input; 
    } 

    public static void main(String[] args) { 
     TrafficSim sim = new TrafficSim("input1.txt"); 
     System.out.println(sim.getContent()); 
    } 
} 

我看到,虽然该问题是,你不按照已经提出的意见和建议。问题是什么,ktm5124非常清楚。在某些时候,你将不得不了解这里发生了什么以及如何解决它。

+0

感谢您的帮助。我明白ktm5124在说什么,我只是不知道如何解决它。为了更好地理解这一点,你能否告诉我你做了什么,并将其与我搞砸的地方进行比较? – user2161813