2014-12-23 5 views
0

Java로 초보자를 실행하면 텍스트 파일에서 문자열을 읽고 쓰고 싶습니다. 아이디어는 있지만 작동하지 않습니다. 그것은 나에게 오류를 보여 ... 내 코드 아래 참조 :오류가 발생했습니다. 내 코드

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

public class Uptime { 


    public static void main(String[] args) { 

     FileWriter fileWriter = null; 
     try 
     { 
      double Oldtime=0; 
      BufferedReader read=new BufferedReader(new FileReader("C:/eGurkha/agent/sample/UptimeRecord.txt")); 
      if(read.readLine()!=null) 
      { 
       Oldtime=Double.parseDouble(read.readLine()); 
       System.out.println("Old System Time is :"+Oldtime); 
      } 
      else 
      { 
       Oldtime=0; 
      } 
      Process p=Runtime.getRuntime().exec("C:\\eGurkha\\lib\\vmgfiles\\win\\VmgUptimeTest.exe"); 
      BufferedReader rd=new BufferedReader(new InputStreamReader(p.getInputStream())); 
      String line=rd.readLine(); 
      System.out.println(line); 
      String[] word=line.split("="); 
      fileWriter=new FileWriter("C:/eGurkha/agent/sample/UptimeRecord.txt"); 
      fileWriter.write(word[1]); 
      System.out.println("New System Time is :"+word[1]); 
      System.out.println("String Written"); 
      fileWriter.close();   
     } 
     catch(IOException e) 
     { 
      e.printStackTrace(); 
     } 

    } 

} 

이것은 위의 코드에 의해 표시되는 오류입니다.

Exception in thread "main" java.lang.NullPointerException 
    at sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:1008) 
    at java.lang.Double.parseDouble(Double.java:540) 
    at com.kavi.tasks.Uptime.main(Uptime.java:17) 

+0

이 예외는 throw됩니다. 왜냐하면 참조 변수가 null 값을 갖고 그 참조 변수에서 메소드를 호출하기 때문입니다. –

+0

정확한 오류를 판별하려면 스택 추적에서 더 많은 것을 제공해야합니다. 그러나 나는이 줄에서 오류가 발생한다고 생각한다. String [] word = line.split ("="); – sboda

답변

1

문제는 코드

if(read.readLine()!=null) 
{ 
    Oldtime=Double.parseDouble(read.readLine()); 

당신은 라인을 읽어 (null가 아닌) 그러나 당신이 때 시도 다음 줄을 읽으입니다 ... 나에게 아이디어를 알려주세요 (그리고 다음 줄은 비어 있습니다.)

사용 대신

String line=read.readLine(); 
if(line!=null) 
{ 
    Oldtime=Double.parseDouble(line); 
0
if(read.readLine()!=null) 
{ 
    Oldtime=Double.parseDouble(read.readLine()); 
    System.out.println("Old System Time is :"+Oldtime); 
} 

당신이 경우 문에서 라인을 읽고. 그런 다음 parseDouble 문에서 다음 행을 읽습니다. 이것은 참조가 null입니다. if 문에 줄을 저장해야합니다.

String line = null; 
if((line = read.readLine()) != null) { 
    double time = Double.parseDouble(line); 
    ... 
} 
0

문자열을 if 문에 전달하면 컴파일이 전달해야하는 객체 유형을 알 수 있습니다. 경우 (문자열 = .... 는 .....) {

} 
0

문제는

if(read.readLine()!=null) 
     { 
      Oldtime=Double.parseDouble(read.readLine()); 
      System.out.println("Old System Time is :"+Oldtime); 
     } 

내의 readLine() 내부적 당신이의 다음 행으로 이동을 의미 ++ LINENUMBER를 호출 함께 당신이 이것을 부를 때 당신의 파일. 대신

관련 문제