-2

//This is my code so far. If anyone guide me through that will be great.

Write a method named evenNumbers that accepts a Scanner as a parameter reading input from a file containing a series of integers, and report various statistics about the integers. You may assume that there is at least one integer in the file. Report the total number of numbers, the sum of the numbers, the count of even numbers and the percent of even numbers. For example, if a Scannerinput on file numbers.txt contains the following text:

5 7 2 8 9 10 12 98 7 14 20 22

then the call evenNumbers(input); should produce the following output:

12 numbers, sum = 214
8 evens (66.67%)

public static void evenNumbers( double input) throws FileNotFoundException{
    Scanner input = new Scanner(new File("numbers.txt"));

    double sum = 0.0;
    for (int count = 1; count <= 12; count++) {
        double next = input.nextdouble();
        sum += next;
        System.out.println(count + "numbers," + "sum = " + next);
    }
    while ( count / 2 == 0) {
        percent = (count / 2 == 0) / 100;
        System.out.println( count + "evens" + "(" + percent + "%)" );
    }
}
Zsw
  • 3,920
  • 4
  • 29
  • 43
JDev
  • 9
  • 2
  • Where do you read from the file? – hermit Aug 16 '15 at 06:38
  • You should post code that (at least) compiles without errors. – laune Aug 16 '15 at 06:49
  • Hints: (1) You should *count* the numbers on the file, not assume that there are 12 numbers. (2) You should read *integer* numbers, not double values. (3) You should *count even numbers* - which has nothing to do with dividing the count of numbers by two. – laune Aug 16 '15 at 06:52

1 Answers1

0

Here is the code that will give you output as you desire:

import java.io.File;
import java.util.Scanner;

public class ReadNumbers {

    public static void main(String[] args) {
        Scanner input = null;
        try {
            input = new Scanner(new File("numbers.txt"));
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        double sum = 0.0;
        double counter=0,evenCounter=0;
        while(input.hasNextDouble()) {
            double next = input.nextDouble();
            sum += next;
            ++counter;
            if(next%2==0)
                evenCounter++;
        }

        System.out.println(counter + " numbers," + "Sum = " + sum);
        System.out.println("\nEven Numbers: "+evenCounter+"("+evenCounter/counter*100+"%)");
    }
} 

There are a lot of errors in your code. Your entire while loop to calculate percentage is wrong.
Also you have written print statement(System.out.println(count + "numbers," + "sum = " + next);) inside for loop and you are printing "sum = " + next which will basically print the input number and not sum!
Also use while loop instead of for loop for such file inputs as shown in this code. Do not assume there will be only 12 numbers.

Riddhesh Sanghvi
  • 1,218
  • 1
  • 12
  • 22