CMSC
CMSC

Reputation: 157

For-loop calculation of arbitrary times

I have a plain format txt file named enroll.txt which contains:

1997 2000  
cs108 40 35 
cs111 90 100  
cs105 14 8 
cs101 180 200 

The first row shows the years of class

The second row first column shows the class name, and the following two columns show the number of students in the class in the years mentioned on the first row.

ex) In 1997, there were 40 students in class cs108.

My desired outcome: code prints as follows using (i) split (ii) parseInt (iii) for-loop

student totals: 
    1997: 324
    2000: 343

But this code should also work for any number of years (for example if I had student numbers for four years for each class instead of two, the code would still give me a similar output as below with student totals of say 1997, 2000, 2001, 2002 etc.)

What I have so far:

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

    public class ProcessCourses{
        public static void main(String[] args) throws FileNotFoundException{  

        Scanner console = new Scanner(System.in); 
        String fileName = console.nextLine(); 

        Scanner input = new Scanner(new File(fileName)); 

        while(input.hasNextLine()){ 
            String line = input.nextLine(); 
            String[] arr = line.split(" "); 


           //......????


        } 
    }
}

What would go inside the //....????

Upvotes: 0

Views: 55

Answers (1)

Karthik
Karthik

Reputation: 5040

So in the first line you have years, read them first :

      Scanner input = new Scanner(new File(fileName)); 
      String str = input.nextLine();
      String[] years = str.split(" ");

Now you have set of student's information,

      int[] total = new int[years.length];
      while(input.hasNextLine()){ 
        String line = input.nextLine(); 
        String[] strength = line.split(" ");
        int len = strength.length; // no of entries which includes course id + "years" no.of numbers.

        for(int i=1;i<len;i++){ // from 1 because you don't care the course id
             total[i-1] = total[i-1] + Integer.parseInt(strength[i]);
        }
     } 

Then just print it :

   for(int i=0;i<years.length;i++){
       System.out.println(years[i]+ " : " + total[i]);
   }

Upvotes: 2

Related Questions