0

编写一个名为 Average 的类,可用于计算多个整数的平均值。它应该包含以下方法:

  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; 
  } 
}
4

4 回答 4

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

**为了促进您的理解,您可以找到范围内整数的平均值!

于 2013-10-22T02:13:44.693 回答
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;
}

最后两种方法未经测试,但根据经验,应该可以正常工作。这些方法具有用于参数的数组,因此您可以根据需要处理任意数量的数字。

于 2013-10-22T02:10:10.747 回答
0

该方法应返回该范围(包括)内整数的平均值。

您被要求返回由两个参数限定的范围内所有整数的平均值。

例如,如果参数是 5 和 10,则该方法应返回 5、6、7、8、9 和 10 的平均值,即 7.5。(包括 5 和 10 是因为问题说范围应该是“包容性的”。)

要找到平均值,请使用 for 循环对范围内的每个整数求和,然后除以整数个数。

我会使用浮点/双精度吗?

返回值应该是floator double,因为平均值并不总是整数。

于 2013-10-22T02:14:50.060 回答
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);
    }
}
于 2013-10-22T02:17:05.580 回答