kavi
kavi

Reputation: 55

Error occurred When I execute my code

I beginner to Java, I want to read and write a string from a text file, I tried with my idea but its not work. It show me an error... See below my code:

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();
        }

    }

}

This is the error, which is shown by the above code.

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)

Please tell me the idea...

Upvotes: 0

Views: 204

Answers (4)

Rahul
Rahul

Reputation: 896

problem is with

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

readLine() internally calls lineNumber++ which means you go to next line of your file when you call this. Instead use

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

Upvotes: 0

M.Usman Siddiqui
M.Usman Siddiqui

Reputation: 79

Try to Pass the String in the if statement ,so that the compile would know that which type of object he needs to pass. if(String=.... .....){

}

Upvotes: 0

StanislavL
StanislavL

Reputation: 57381

The problem is the code

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

You read line (it isn't null) but then you read the next line when try to parse (and the next line is empty).

Use instead

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

Upvotes: 1

Flown
Flown

Reputation: 11740

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

You're reading the line in the if-statement. Then you read the next line in the parseDouble-statement. This is reference is null. So you've to save the line in the if statement.

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

Upvotes: 0

Related Questions