2015-09-25 93 views
1

今天我試着用Java編寫一個簡單的程序,它給了我輸入的數字的平均值。我需要使用double而不是int,因爲我的結果是正確的。爲什麼? (Java)

問題是,如果我使用int添加(如下圖所示),我沒有得到相同的答案,因爲當我使用雙添加。

代碼:

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

    } 

} 

結果:

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 

當我使用雙,我得到正確的答案:

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

    } 

} 

結果,當我使用雙增加,而不是INT加入:

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 

爲什麼會發生這種情況,我應該怎麼做才能避免它? 對我來說,似乎添加可能是一個整數,因爲我不加小數,但我加起來整數。

預先感謝您。

+3

整數除法的結果是一個'int',它沒有小數部分。 – Jyr

+1

右:int x = y/z對於所有z> y都將返回x = 0,當它們都是整數時。真正的Java,C,C++,C#等 – duffymo

+1

所以'(int)5/2將是2'(int實際上是2.5,但是.5被忽略)'(double)5/2將是2.5'(double是能夠存儲它) –

回答

3

爲了added/amount返回一個非整數,在addedamount必須floatdouble或轉換爲其中一方。

當二者都int,一個整數除法發生並且因此僅轉換爲double分割之後,以被存儲在你的doubleaverage變量。

+0

我明白了。謝謝。 –

1

其中均爲元素爲整數的除法結果將爲整數。至少其中一個需要浮點或浮點數的結果爲浮點數。

+0

我會記住的。謝謝。 –

相關問題