2013-10-22 54 views
0

編寫一個名爲Average的類,可用於計算多個整數的平均值。它應該包含以下方法:Java平均程序

  1. 接受兩個整數參數並返回其平均值的方法。
  2. 接受三個整數參數並返回其平均值的方法。
  3. 接受表示範圍的兩個整數參數的方法。

如果第二個參數小於第一個參數,則發出錯誤消息並返回零。否則,該方法應該返回該範圍內的整數的平均值(含)。 實現這個類並編寫一個程序來測試它的方法並提交你的源代碼(.java文件)。

我被困在第三部分,我甚至沒有真正理解這個規定。我將使用浮點/雙精度?下面是節目我迄今:

import java.util.Scanner; 

public class Average { 

    public static void main(String[] args) { 
    int numb1, numb2, numb3, userInput; 
    System.out.println("Enter '2' if you wish to average two numbers enter '3' if you wish to average 3."); 
    Scanner keyboard = new Scanner(System.in); 
    userInput = keyboard.nextInt(); 
    if (userInput == 2){ 
     System.out.println("Enter two numbers you'd like to be averaged."); 
     numb1 = keyboard.nextInt(); 
     numb2 = keyboard.nextInt(); 
     Average ave = new Average(); 
     System.out.println("The average is: " + ave.average(numb1, numb2)); 
     System.exit(1); 
    } 
    if(userInput == 3){ 
     System.out.println("Enter three numbers you'd like to be averaged."); 
     numb1 = keyboard.nextInt(); 
     numb2 = keyboard.nextInt(); 
     numb3 = keyboard.nextInt(); 
     Average ave = new Average(); 
     System.out.println("The average is: " + ave.average(numb1, numb2, numb3)); 
     System.exit(1); 
    } 
    } 
    public static int average (int num1, int num2) { 
    return (num1 + num2)/2; 
    } 
    public static int average (int numb1, int numb2, int numb3){ 
    return (numb1 + numb2 + numb3)/3; 
    } 
} 
+2

你可以做功課自己嗎? – Raptor

+0

我只是要求第三部分的指導,我一直在努力編寫這個程序大約一個小時,那麼你如何不停地浪費我的時間,並對自己保持聰明的評論?謝謝! –

+0

你的[上一篇文章](http://stackoverflow.com/questions/19507108/java-averaging-program)的答案有什麼問題? – MadProgrammer

回答

0

不是真的在這裏做你的功課,但因爲我已經在這裏,範圍是最大和最小數之間的差異。

public int returnRange(int first, int second) { 
    if(first > second) 
     return first-second; 
    else 
     return second-first; 
} 

爲了使事情變得更容易,雖然...

public double returnAverage(int...numbers) { 
    for(int i = 0; i < numbers.length(); i++) { 
     total += numbers; 
    } 

    return total/numbers.length(); 
} 

public int returnRange(int...numbers) { 
    int holder = 0; 

    int highest; 
    int lowest; 

    for(int i = 0; i < numbers.length(); i++) { 
     if(numbers[i] > holder) { 
      holder = numbers[i]; 
    } 
    highest = holder; 

    for(int i = 0; i < numbers.length(); i++) { 
     if(numbers[i] < holder) { 
      holder = numbers[i]; 
     } 
    } 
    lowest = holder; 

    return highest-lowest; 
} 

最後2種方法未測試,但根據經驗,應該正常工作。這些方法有參數的數組,所以你可以根據需要做很多數字。

+0

如果我調用'returnAverage(Integer.MAX_VALUE,Integer.MAX_VALUE - 2)',結果如何? – Vitkinov

+0

@Vitkinov它會首先溢出(最大+最大)。當一個整數達到它的最大值,並且添加到它時,它將重置爲最小值,然後從那裏繼續添加。如果你真的對答案感到好奇,就試試看。如果你想知道如何避免溢出,可以使用不同的數據類型('long'可以達到9 tril,'[BigInteger](http://docs.oracle.com/javase/7/docs/api/java /math/BigInteger.html)'沒有限制,但它不是原始的) –

0

您將使用整數。第3部分希望您計算範圍的平均值。假設你通過3作爲第一個參數,5作爲第二個參數。你需要計算3到5之間的所有數字的平均值。它表示「包含」,這意味着在這種情況下,你可以計算3,4和5的平均值。在這種平均方法中,你需要使用for循環。

如果是我,我不會拋出一個錯誤,如果有人傳遞給我的方法5和3,我只是交換值,但嘿我不是寫作業的人。

1

請不要重複問同樣的問題,你就在這裏問:http://stackoverflow.com/questions/19507108/java-averaging-program

而是更新您的其他職位,以反映新的代碼/問題。

現在到你的問題:

  1. 接受兩個整數參數表示的範圍的方法。如果第二個參數小於第一個參數,則發出錯誤消息並返回零。否則,該方法應該返回該範圍內的整數的平均值(含)。實現這個類並編寫一個程序來測試它的方法並提交你的源代碼(.java文件)。

讓我們從聲明我們的方法開始,我們將聲明它爲靜態的以符合您的程序(因爲您沒有創建自己的對象)。然後我們要檢查參數是否遵循賦值指令並相應地返回值。

public static int getRange(int firstValue, int secondValue) 
    { 
     int range; 
     if (firstValue > secondValue) 
      range = firstValue - secondValue; 
     else 
     { 
      range = 0; 
      System.out.println("Error!"); 
     } 
     return range; 
    } 

**爲了促進你的理解,你可以找到範圍內整數的平均值!

0

該方法應返回該範圍(包含)的整數的平均值。

系統會要求您返回兩個參數範圍內的所有整數的平均值。

例如,如果參數是5和10,則該方法應返回5,6,7,8,9和10的平均值,即7.5。 (包含5和10是因爲問題說範圍應該是「包含」)。

要找到平均值,請使用for循環將範圍內的每個整數相加,然後除以整數。

我會使用浮點/雙?

返回值應該是floatdouble,因爲平均值不總是一個整數。

0

在-1和返回錯誤的主要方法檢查時,第一值大於第二更大

public double avgRange(int a, int b){ 

    if(a>b){ 
     return -1; 
    } 
    else{ 
     double total=0; 
     for(int x=a; x<=b; x++){ 
      total = total + x; 
     } 
     return total/(b-a+1); 
    } 
}