2013-12-15 5 views
2

저는 Java를 처음 접했고 파일의 각 줄이 "node1 node2"인 .txt 파일에서 네트워크를 생성해야하는 프로젝트를 시작했습니다. 노드 사이의 표. 노드 클래스와 노드 클래스를 인수로 받아들이는 edge 클래스를 만들었습니다. 이제는 네트워크 클래스를 작성하고 있습니다. 내 노드 및 상호 작용 (가장자리) 정보를 저장하려면 Arraylist을 사용하고 있지만 주 프로그램에서이 정보를 검색하는 방법은 혼란 스럽습니다. 네트워크 클래스는 스탠드로 :클래스의 ArrayList 정보 가져 오기

import java.io.*; 
import java.util.ArrayList; 

public class Network { 

    public ArrayList<String> nodes = new ArrayList<String>(); 
    public ArrayList<String> edges = new ArrayList<String>(); 

    public String filename; 

    public Network(String f) {  

     this.filename = f; 

     FileReader networkinput = null; 

     try { 

      networkinput = new FileReader("f"); 
      BufferedReader bufferedReader = new BufferedReader(networkinput); 
      //reads the argument file in. 

      String line = null; 

      while((line = bufferedReader.readLine()) != null) { 

       edges.add(line);  // Adds each line of the file to the array 
       String delimiter = "\t"; 
       String[] tempnodelist; // Creates an array each loop 
       tempnodelist = line.split(delimiter); 
       nodes.add(tempnodelist[0]); // Adds the first node 
       nodes.add(tempnodelist[1]); // Adds second node to node array. 

      } 
      bufferedReader.close(); 
     } 
     catch (IOException e) { 

      System.out.println("Read Error!"); 
     } 
    } 
} 
그것이 내가이 코드는 파일을 받아 각 라인에 도달하고 ArrayList를 "노드"로 각 노드를 배치 할 로선

하고, ArrayList를로 (상호 작용을 나타내는) 각 라인 "가장자리". 주 프로그램 내에서이 정보를 검색하여 어떻게 생각하는지 확인하는 방법을 모르겠습니다.

이 코드는 내가 예상 한대로 수행하고 있습니까? 어떻게하면 주 프로그램에서이 ArrayList 정보를 검색 할 수 있습니까?

불명확 한 점이 있으면 언제든지 문의하십시오.

+3

* "아무것도 불분명 한 경우 어떤 질문하십시오."*는 추가하는 것을 잊지 마십시오 '을?' 질문하기! 어떤 사람들은이 페이지에서 '?'을 검색합니다. '질문'에 아무 것도 없으면 다음 (실제) 질문으로 직접 이동하십시오. 또는 다른 방법으로 넣으십시오. 귀하의 질문은 무엇인가? –

+0

* "이 코드가 내가 원하는대로하고 있습니까?"* 시도 했습니까? 너는 무엇을 얻었 느냐? –

+0

나는 어떻게해야할지 잘 모르겠다. 그게 문제 야. 파일이 입력되고 ArrayLists가 채워지면 (실제로는 ...) – user2941526

답변

1

Network 클래스의 인스턴스를 만들어 생성자에서 진행되는 모든 작업을 초기화합니다. 그런 다음 데이터에 액세스하십시오. 무엇 erzr2 @ 말했다 고려 :

public class TestNetwork { 
    public static void main(String[] args){ 
     Network network = new Network("file.txt"); <-- create instance 
     ArrayList<String> nodes = network.nodes; <-- reference the data 
     ArrayList<String> edges = network.edges; 

     for (String s : nodes) {     <-- traverse data 
      System.out.println(s);     <-- print data 
     } 

     for (String s : edges){ 
      System.out.println(s); 
     } 
    } 
} 

또한, 당신의 생성자에서 발견 잘못 다른 점은이

networkinput = new FileReader("f"); <-- "f" I don't think is the file path. 

당신이

networkinput = new FileReader(f); 

or 

networkinput = new FileReader(filename); 

주를 사용해야합니다.

+0

우수함, 필요한 것. 시간 내 주셔서 감사합니다! – user2941526

1

Array.List를 얻기 위해 Network.nodes를 호출 할 수 있지만 사용 방법에 따라 반드시 권장하는 것은 아닙니다. ArrayList를 비공개로 만들고 ArrayList를 반환하는 getter 메서드를 만든 다음 다른 클래스의 메서드를 호출 할 수 있습니다. 이 같은 뭔가 :

private ArrayList<String> nodes = new ArrayList<String>(); 
private ArrayList<String> edges = new ArrayList<String>(); 

나중에이 있습니다

public ArrayList<String> getNodes(){ 
    return nodes; 
} 
+0

대단히 고맙습니다. 이것은 내가 필요한 것입니다. 나는 너에게 좋은 진드기를 둘 수 있었으면 좋겠다 : p. – user2941526

관련 문제