I wrote this program that reads data from a txt file named books,and then arranges the data by name and price. that part works fine ,my problem is that I want to sum up the total price of the books and display it. I've tried a couple of ways to do this but cannot get any to work.I dont seek help with my code untill I have tried for at least 2 hrs. After that I get frustrated. Any help will be greatly apprecited..Carl

public class Readafile {

    public static void main(String args[]) throws IOException {

        File myFile = new File("books.txt");// Accesses books file
        Scanner inputFile = new Scanner(myFile);
        String line = inputFile.nextLine();
        String line1 = inputFile.nextLine();// puts line & line1 on the same
                                            // line
        System.out.println(line + "                " + line1);
        String line2 = inputFile.nextLine();
        String line3 = inputFile.nextLine();// puts line2 & line3 on the same
                                            // line
        System.out.println(line2 + "            " + line3);
        String line4 = inputFile.nextLine();
        String line5 = inputFile.nextLine();// puts line4 & line5 on the same
                                            // line
        System.out.println(line4 + "           " + line5);
        String line6 = inputFile.nextLine();
        String line7 = inputFile.nextLine();// puts line6 & line7 on the same
                                            // page
        System.out.println(line6 + "                  " + line7);
        System.out.println("--------------------------");

        double sum;
        sum = 0.0;
        while(inputFile.hasNext()){
            double number = inputFile.nextDouble();
            sum = sum + number;
            System.out.println("Total          " + sum);
        }


    }
}   

Recommended Answers

All 7 Replies

Thanks I will check it out

Thanks I will check it out[/ That would work fine as a stand alone application but I am trying to get it to sum the numbers in my program. I know that I am very new to this but I dont see how I can make this work in my program. I am very gratefull for your help.]

As I understood, you have combined information in your file "books.txt" (name -
string and price - double). To split information, that was read from your file you should use patterns (in example there is pattern to delimit using comma and different number of whitespaces " *" ). You also can use control symbols, such as "\n".

//we have cycle until we'll reach the symbol,
//what hasn't next element
while(src.hasNext()) { 
      //if next value is double
      //(it is just checking next value, not goes to it)
      if(src.hasNextDouble()) { 
	//we take this value and add to sum
        sum += src.nextDouble(); 
      }
      //if the next value is not  double
      //in your case you should pass through this block
      else { 
        //we take this element as string
        String str = src.next();  
        //if this string equals("done"), we are
	//coercive breaking the cycle
        if(str.equals("done")) break; 
        else { 
          //if this is not "done" we have troubles :)
          System.out.println("File format error."); 
          return; 
        } 
      } 
    }

Did I answered on your question?

commented: Quite the helpful individual =) +5

Both of your replys were very helpful thanks.

public static void main(String args[]) throws IOException {

I would suggest you to drop this throws IOException. you can throw it there if you want, but what's the use? the main method is the last possible place to catch it

Interesting, I included it there because thats where the example in my text book had it.

We are using "Starting out with JAVA .. Early Objects". Some of the guys in class say there are better texts to begin with but this is what our instructor wanted.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.