2010-12-23 7 views
0

x 행 수의 텍스트 파일이 있습니다. 각 행은 정수를 보유합니다. 사용자가 버튼을 클릭하면 텍스트 파일에 표시된대로 모든 값을 나열해야하는 actionlistener를 통해 작업이 수행됩니다. 그러나 지금은 linenum을 10으로 설정 했으므로 텍스트 파일의 10 줄만 사용하는 코드를 이미 설명했습니다. 그래서 내 텍스트 파일에 3 행/라인의 데이터 만 있으면 ... 그 라인을 나열하고 나머지 7 라인의 나머지 부분에는 "null"을 내뱉습니다.자바를 사용하여 텍스트 파일에서 데이터 행 읽기

줄임표를 사용하여 정확한 값을 알지 못한다는 것을 프로그램에 알리는 방법이 있지만 결국에는 주어진 정보를 기반으로 계산합니다. 내 주어진 정보는 숫자 (데이터)가있는 줄 수입니다.

아래는 코드의 일부입니다. 그것을 설정하기 때문에

private class thehandler implements ActionListener{  
public void actionPerformed(ActionEvent event){ 
BufferedReader inputFile=null;   
try { 
    FileReader freader =new FileReader("Data.txt"); 
    inputFile = new BufferedReader(freader); 

    String MAP = ""; 
    int linenum=10; 
    while(linenum > 0) 
     { 
    linenum=linenum-1; 
    MAP = inputFile.readLine();//read the next line until the specfic line is found 

    System.out.println(MAP); 
    } 

    } catch(Exception y) { y.printStackTrace(); } 

}} 

답변

1

linenum > 0 대신 (MAP = inputFile.readLine()) != null 및 삭제 다음 라인, 인터넷 검색의 비트 + 도움이 될 linenum=linenum-1; MAP = inputFile.readLine(); 및 다음 시간) 마지막 줄의 null 값이 인쇄되지 않을 것이다 다음 줄을 넣어 현재 줄이 될 줄을 찾고 null 값과 비교하여 마지막 줄이 null이면 인쇄하지 않으며 10 줄 제한은 무엇입니까? 당신은 쉽게 할 수 있습니다 for 루프에 인덱스를 추가하고 색인을 붙이고 & &이 10보다 작 으면

+0

그는 Google에서 무엇을하고 싶습니까? –

+0

파일 작업 중입니까? 그게 내가 문제가있을 때마다 뭐하는거야 – Swine1973

+0

고마워. 나는 실행 당 약 5-20 라인을 가질 것이다. 나는 단지 100으로 설정하여 안전면에 있다고 생각한다./또는 파일의 라인 수를 계산하여 라인 수에 제한하는 정수로 설정했을 것이다. 감사합니다. – razshan

0

값이 null 인 경우 어떻게 인쇄하지 않습니까?

1

테스트는 널 (null) 정지 루프, 그래서 같은 경우) BufferedReader.readLine (에서 돌아 오는 값 :

BufferedReader reader = new BufferedReader(new FileReader("Data.txt")); 
try { 
    for (String line; (line = reader.readLine()) != null;) { 
     System.out.println(line); 
    } 
} finally { 
    reader.close(); 
} 

편집 : 당신은 위의 코드를 변경할 수 있습니다, 처음 10 선을 취하도록 요구 사항을 잊었다 파일이 다음이 물론, 비효율적 인 것 큰 경우

public List<String> takeFirst(int howMany, List<String> lines) { 
return lines.size() <= howMany ? lines : lines.subList(0, howMany); 
} 

을, 그 중요한 경우는 종료됩니다 : 목록을 목록에 출력을 넣어 반환, 당신은 다음과 같은 기능을 통해 그것을 필터링 할 수 있습니다 같은 것을하는 위로 :

BufferedReader reader = new BufferedReader(new FileReader("Data.txt")); 
try { 
    int linesRead = 0; 
    for (String line; (line = reader.readLine()) != null && linesRead < 10;) { 
     System.out.println(line); 
     linesRead += 1; 
    } 
} finally { 
    reader.close(); 
} 

더럽지 만 필요한 라인 만 읽습니다.

+0

OP의 '제한 10'을 충족해야합니다. 그냥 sayin ' –

+0

@ 토니 에니스 : 고마워, 그 부분을 잊어 버렸습니다. –

관련 문제