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

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


Edited by Reverend Jim: Fixed formatting

8 Years
Discussion Span
Last Post by carlcarman

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."); 

Did I answered on your question?

Votes + Comments
Quite the helpful individual =)
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

Edited by mike_2000_17: Fixed formatting


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.

This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.