Jonathan Lagenhorst
Jonathan Lagenhorst

Reputation: 81

I need to use double instead of int for my outcome to be correct. Why? (Java)

Today i tried to make a simple program in Java that gives me the average of the numbers i entered.

The problem is that if i use int added (as shown below), i don't get the same answer as when i use double added.

Code:

public class Main {

    public static void main(String[] args) {

        int amount;
        int number;
        int added = 0;
        double average;

        Scanner input = new Scanner(System.in);

        System.out.println("This program calculates the average of the numbers entered by you.");
        System.out.println("How many numbers do you want to enter?");
        amount = input.nextInt();

        for(int i=1; i<=amount; i++){
            System.out.println("Enter a number:");
            number = input.nextInt();
            added = added + number;
        }

        average = added/amount;
        System.out.println("The average of the numbers entered is: " + average);

    }

}

Result:

This program calculates the average of the numbers entered by you.
How many numbers do you want to enter?
6
Enter a number:
3
Enter a number:
2
Enter a number:
4
Enter a number:
1
Enter a number:
6
Enter a number:
5
The average of the numbers entered is: 3.0

When i use double, i get the right answer:

public class Main {

    public static void main(String[] args) {

        int amount;
        int number;
        double added = 0;
        double average;

        Scanner input = new Scanner(System.in);

        System.out.println("This program calculates the average of the numbers entered by you.");
        System.out.println("How many numbers do you want to enter?");
        amount = input.nextInt();

        for(int i=1; i<=amount; i++){
            System.out.println("Enter a number:");
            number = input.nextInt();
            added = added + number;
        }

        average = added/amount;
        System.out.println("The average of the numbers entered is: " + average);

    }

}

Result when i use double added instead of int added:

This program calculates the average of the numbers entered by you.
How many numbers do you want to enter?
6
Enter a number:
3
Enter a number:
2
Enter a number:
4
Enter a number:
1
Enter a number:
6
Enter a number:
5
The average of the numbers entered is: 3.5

Why does this happen and what should i do to avoid it? To me it seems like added could be an int because i don't add up decimals but i add up whole numbers.

Thank you in advance.

Upvotes: 1

Views: 454

Answers (2)

npinti
npinti

Reputation: 52185

The result of a division in which both elements are integer, will be an integer. At least one of them needs to be a float or a double for the result of the division to be a floating point number.

Upvotes: 1

Eran
Eran

Reputation: 393841

In order for added/amount to return a non integer, either added or amount must be float or double or cast to either of them.

When both are int, an integer division takes place and the result is only converted to double after the division in order to be stored in your double average variable.

Upvotes: 3

Related Questions