【问题标题】:Min Max in BlueJBlueJ 中的最小值最大值
【发布时间】:2017-03-28 03:16:22
【问题描述】:

我正在从我的大学做我的作业,但我在这个问题上很挣扎:读入整数,直到用户输入-1。如果至少有 3 个值,则显示不包括最大和最小数字的平均值。 这是我的代码,但似乎它并没有去掉最大和最小的数字来获得平均值。

import java.util.Scanner;
public class MiddleAverage {
    public static void main(String[] args) {
        int sum;
        int count;
        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;
        double average;
        sum = 0;
        count = 0;
        average = 0;
        Scanner scanner = new Scanner(System.in);
        System.out.print("Value: ");
        int value = scanner.nextInt();
        while ( value != -1)
        {
            if ( value < min )
            min = value;

            if ( value > max )
            max = value;

            System.out.print("Value: ");
            value = scanner.nextInt();
            count++;
            sum = sum + value;
            average = sum / count;
        }
        if (value == -1)
        {
            System.out.println("Middle average is: " + average);
        }



    }
}

您对此有任何想法,请向我解释。谢谢!

【问题讨论】:

  • 您正在跟踪 minmax 值,但您从未对它们进行任何操作。如果您想在打印平均值之前去掉它们,您必须编写执行此操作的代码。
  • 您好,谢谢您的建议。另一个问题是代码在“while”循环或“If”循环内执行此操作。谢谢
  • 没有没有 if循环。只有 if 语句。
  • 对不起,我的意思是“如果”语句对不起

标签: bluej


【解决方案1】:

在您的代码中,您每次输入一个值时都会计算平均值,这有点浪费,因为您只需要最后的平均值。 (而且它也很难删除最小值和最大值!)

我对你的代码做了一些改动,看看:

int sum = 0, count = 0; // Condensed a few lines

int min = Integer.MAX_VALUE; 
int max = Integer.MIN_VALUE;

Scanner scanner = new Scanner(System.in);
int value;

System.out.print("Value: ");
value = scanner.nextInt();

while (value != -1) {

    if ( value < min )
        min = value;

    if ( value > max )
        max = value;

    count++;
    sum = sum + value;

    System.out.print("Value: ");
    value = scanner.nextInt();
}

// You don't need to check if it's -1 because it MUST be in order to leave the loop
if (count >= 3) {
    System.out.println("Middle average is: " + (sum - max - min) / (count - 2));
} else {
    // Less then 3 values
}

干杯!

【讨论】:

  • 希望对您有所帮助!应该注意的是,有几种不同的方法可以做到这一点,我尝试遵循您已经拥有的方法。另外,不要忘记点赞/接受有帮助的 ;)
  • 注意整数除法 - 您需要将 / 操作数之一转换为浮点类型,否则您将得到整数答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
  • 2011-12-22
  • 2014-11-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多