【问题标题】:Need to get highest and lowest value without array需要在没有数组的情况下获得最高和最低值
【发布时间】:2013-12-05 09:12:11
【问题描述】:

我正在做一个作业,我必须一周中的 7 天,每个作为变量并创建两个函数。一个找到 7 天的平均温度,另一个找到 7 天的最冷和最热的温度。我们不允许使用数组。我知道这是很多无用的代码,但它是作业要求的。

我的问题是我可以弄清楚如何找到最小值和最大值。有什么建议吗?

import java.util.Scanner;

public class Temperature {
public static void getAverage(double day1, double day2, double day3, double day4, 
                              double day5, double day6, double day7){
double average = (day1 + day2 + day3 + day4 + day5 + day6 + day7)/7;

System.out.printf("The average is: %.2f\n", average);
}
public static void getHotAndCold( double day1, double day2, double day3, double day4, 
                               double day5, double day6, double day7){

}

public static void main(String [] args){
Scanner s = new Scanner(System.in);
double day1, day2, day3, day4, day5, day6, day7;

System.out.println("Enter the temperatures for each day of the week starting with,     Monday");
day1 = s.nextDouble();

System.out.println("Tuesday");
day2 = s.nextDouble();

System.out.println("Wednesday");
day3 = s.nextDouble();

System.out.println("Thursday");
day4 = s.nextDouble();

System.out.println("Friday");
day5 = s.nextDouble();

System.out.println("Saturday");
day6 = s.nextDouble();

System.out.println("Sunday");
day7 = s.nextDouble();

getAverage(day1, day2, day3, day4, day5, day6, day7);
 }
}

【问题讨论】:

  • 首先,在 Days 中使用枚举而不是魔术字符串。为天分配 int 值。
  • 是否禁止创建其他函数?
  • 我不知道为什么我把它做成双倍的,很好的捕获,我还不知道枚举是什么,所以我假设不使用它。是的,只有 2 个功能。
  • 你必须说出你得到输入的日期吗?你可以使用循环吗?
  • 我可以使用循环,但不知道如何实现它们..

标签: java max min


【解决方案1】:

你可以做这样的事情。使用Math.max 获得一对中的最大值,然后继续这样做直到第七天。最后一个比较将值赋给全局变量。

double max;
double min;

public static void getMaxAndMin(
                   double day1, double day2, double day3, double day4, 
                                double day5, double day6, double day7){

    max = Math.max(day1, day2);
    max = Math.max(max, day3);
    max = Math.max(max, day4);
    max = Math.max(max, day5);
    max = Math.max(max, day6);
    max = Math.max(max, day7);

    min = Math.min(day1, day2);
    min = Math.min(min, day3);
    min = Math.min(min, day4);
    min = Math.min(min, day5);
    min = Math.min(min, day6);
    min = Math.min(min, day7);

}

【讨论】:

  • 不需要多个最大值,可以用一个来跟踪运行值。
  • 我刚刚注意到了。谢谢。我修好了。
  • 这也是对的。我会给你支票,因为你首先回答了 .Math 课程。谢谢!
【解决方案2】:

你可以这样做:

public static void getHotAndCold( double day1, double day2, double day3, double day4, 
                               double day5, double day6, double day7)
{
    double min = day1;
    double max = day1;

    if (day2 < min)
    {
        min = day2;
    }
    if (day2 > max)
    {
       max = day2;
    }

    // and so on.
}

【讨论】:

  • 谢谢.. 如此重复,但我认为这是唯一的方法。
【解决方案3】:

如果你真的想循环(或者只是恶意):

// create your own node to link days
public static class Day{
    double temp;
    Day next;
    Day(double temp, Day next){
        this.temp = temp;
        this.next = next;
    }
}

public static double coldest(Day day){
    double  minTemp = day.temp;
    while((day = day.next) != null) minTemp = Math.min(day.temp, minTemp);
    return minTemp;
}

//etc...

public static void main(String... args){
    Day days = new Day(70, new Day(60, new Day(65, new Day(45,
               new Day(83, new Day(72, new Day(55,null)))))));

    System.out.println("Coldest:" + coldest(days));
}

【讨论】:

    【解决方案4】:

    其他答案的变体。

    double max, min;
    
    public static void getMaxMin(double day1, double day2, double day3, double day4,
                                 double day5, double day6, double day7){
    
        max = Math.max(day1, Math.max(day2, Math.max(day3, Math.max(day4,
              Math.max(day5, Math.max(day6, day7))))));
    
        min = Math.min(day1, Math.min(day2, Math.min(day3, Math.min(day4,
              Math.min(day5, Math.min(day6, day7))))));
    

    }

    【讨论】:

    • 我是这样用的。多谢你们!感谢您的帮助!
    • 酷,很高兴它有用!顺便说一句,您能否对任何对您有帮助的答案投票。这样一来,最有帮助的答案就会首先出现在其他观众面前(我们的工作也会得到奖励)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 2021-02-17
    • 2015-01-25
    相关资源
    最近更新 更多