首页 > 解决方案 > 获取每周温度 - ArrayList 问题

问题描述

我是任何类型的计算机编程/语言的全新初学者(尝试改变职业)。我正在通过在线学校学习编程 1,我们使用 Zybooks(我没有发现它很有帮助,所以我一直在使用其他资源)。这是本周作业的提示:

开发一个 Java 程序,以一周日平均气温的形式存储数据。将日期和平均温度存储在两个不同的数组列表中。您的程序应该提示用户一周中的哪一天(周一到周日),并显示每一天的日期和温度。如果输入“周”,程序的输出应提供每天的温度和每周的平均温度。将循环和决策结构与数组结合使用来完成此分配。

以下是我到目前为止的代码。我只是想知道 1)我是否走在正确的轨道上,以及 2)如何打印出我的临时工以与工作日相匹配?我想过做一个 addList 的事情,但不会用临时工代替工作日吗?我有很多问题,我正在努力寻找一位导师来帮助我。与此同时,我想我会问这个社区......尤其是因为我的在线老师忽略了我所有的电子邮件和问题。好有趣...

import java.util.ArrayList;

import java.util.Scanner;

public class weeklyTemps {

    public static void main(String[] args) {
        final int NUM_TEMPS = 7;
        @SuppressWarnings("resource") //not sure where this came from...figure out later

        Scanner scnr = new Scanner(System.in);
        ArrayList<String> weekDays = new ArrayList<>();
        ArrayList<Integer> weekTemps = new ArrayList<>();

        String wkDay = "";
        int averageTemp = 0;
        int sumVal = 0;
        int i = 0;

            weekDays.add("Monday");
            weekDays.add("Tuesday");
            weekDays.add("Wednesday");
            weekDays.add("Thursday");
            weekDays.add("Friday");
            weekDays.add("Saturday");
            weekDays.add("Sunday");


            weekTemps.add(75); //temps for the week
            weekTemps.add(80);
            weekTemps.add(77);
            weekTemps.add(73);
            weekTemps.add(83);
            weekTemps.add(81);
            weekTemps.add(79);


            for (i = 0; i < weekDays.size(); ++i) { 
                System.out.print("Enter the week day: ");
                wkDay = scnr.nextLine();
            }

            for (i = 0; i < weekTemps.size(); ++i) {
                //sumVal = weekTemps //figure out how to add these together later w/out writing them all out
                averageTemp = sumVal / NUM_TEMPS;
            }

            if (wkDay.equals(weekDays())) {
                System.out.print("The temperature for that day is " + weekTemps.get(0) + " degrees.");
            }
            else {
                System.out.print("The average temperature for the week is " + averageTemp + " degrees.");
            }



return;

    }

    private static Object weekDays() { //what is this...i did not write this...
        // TODO Auto-generated method stub
        return null;
    }

}

标签: javastringarraylistint

解决方案


我的解决方案:

import java.util.ArrayList;
import java.util.Scanner;

public class Main{
    public static void main(String[] args) {
            ArrayList<Integer> dayTemps = new ArrayList<>();
            ArrayList<String> dayNames = new ArrayList<>();

            dayNames.add("Monday");
            dayNames.add("Tuesday");
            dayNames.add("Wednesday");
            dayNames.add("Thursday");
            dayNames.add("Friday");
            dayNames.add("Saturday");
            dayNames.add("Sunday");


            dayTemps.add(75); //temps for the week
            dayTemps.add(80);
            dayTemps.add(77);
            dayTemps.add(73);
            dayTemps.add(83);
            dayTemps.add(81);
            dayTemps.add(79);

            Scanner scn = new Scanner(System.in);
            System.out.println("Enter the week day: ");
            String wkDay = scn.nextLine();
            scn.close(); //It is important to close the resources we use, preventing leak

            int indexOfWeekDay = dayNames.indexOf(wkDay); //get the in index of the day
            if(indexOfWeekDay != -1){ //if the name cannot be found, -1 is returned
                //User asked us about specific weekday:
                System.out.print("The temperature for " + dayNames.get(indexOfWeekDay) +" is " + dayTemps.get(indexOfWeekDay) + " degrees.");
            }else if(wkDay.equals("week")){
                //User asked us about average:
                //Only bother calculating average if asked ;)
                float averageTemp = 0; // I would recommend float for percision
                for (Integer dayTemp : dayTemps) { //This is called an enchanted for loop. I suggest looking it up ;)
                    averageTemp += dayTemp;
                }
                averageTemp /= dayTemps.size();
                System.out.print("The average temperature for the week is " + averageTemp + " degrees.");
            }else{
                //We can't recognise the entry
                System.out.println("Wrong entry: " + wkDay);
            }
    }
}

推荐阅读