marco ocampo
marco ocampo

Reputation: 1

How to exclude negative numbers from average calculation in while loop

I have a program that accepts user inputs and calculate maximum, minimum, and average. The program closes when the user inputs any negative number. How do I exclude the negative number from the average calculation? Here is what I have so far:

// variable
double n = 1;
double ave = 0;
double sum = 0;
double max = Double.MIN_VALUE; 
double min = Double.MAX_VALUE ;
int count = 0;
double neg;
    
//creat scanner object
Scanner input = new Scanner(System.in);

//loop
while (n > 0) { 
 
    System.out.print("Input an income (any negative number to quit): "); 
    n = input.nextDouble();

    sum = sum + n;
    count++;
    ave = sum / count;

    if(n<0) neg = n;
    if(n>max && n >= 0 ) max = n;
    if(n<min && n >= 0) min = n;
    if(n>0) ave = n; 
}

System.out.print(" Average " + ave + "\n Maximum " + max + "\n Minimum " + min);

Upvotes: 0

Views: 1837

Answers (3)

SkyMaster
SkyMaster

Reputation: 1323

Try this:

double n = 1;
double ave = 0;
double sum = 0;
double max = Double.MIN_VALUE; 
double min = Double.MAX_VALUE ;
int count = 0;

// create scanner object
Scanner input = new Scanner(System.in);

// loop until n is negative
while (n >= 0) { 
    System.out.print("Input an income (any negative number to quit): "); 
    n = input.nextDouble();

    if (n >= 0) {
        if (n > max) max = n;
        if (n < min) min = n;
        sum = sum + n;
        count++;
    }
}

if (count > 0)
    ave = sum / (double) count;

System.out.print(" Average " + ave + "\n Maximum " + max + "\n Minimum " + min);

Upvotes: 0

Chit Khine
Chit Khine

Reputation: 850

The following code only sums the input numbers when n is not negative.

import java.util.Scanner;

public class sample {
    public static void main(String[] args) {
        double n = 1;
        double ave = 0;
        double sum = 0;
        double max = Double.MIN_VALUE;
        double min = Double.MAX_VALUE;
        int count = 0;
        double neg;

        Scanner input = new Scanner(System.in);
        // loop
        while (n > 0) {

            System.out.print("Input an income (any negative number to quit): ");
            n = input.nextDouble();
            if(n >= 0){
              sum = sum + n;
              count++;
            }
            if (n < 0)
                neg = n;

            if (n > max && n >= 0)
                max = n;
            if (n < min && n >= 0)
                min = n;
            if (n > 0)
                ave = n;
        }

        System.out.print(" Average " + ave + "\n Maximum " + max
                + "\n Minimum " + min);
    }
}

Upvotes: 0

Azodious
Azodious

Reputation: 13872

Add an if condition:

n = input.nextDouble();

if(n < 0)
    break;

sum = sum + n;

Upvotes: 1

Related Questions