Use of Arrays.toString()



这已被修改为共享我的(几乎完成的(代码。我试图确定我在这方面缺少什么line: System.out.println(" is " + Arrays.toString(AvgTemp.getTemp((((;而不是打印每一行中的所有元素,只打印与月份相关的元素。而不是收到这个:1 月份的平均温度为 [45.0, 40.0

, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0]

我应该看到这样的东西:一月的平均温度是 [45.0]

问题是我做错了什么来剥离所需的元素?

ArrayList<String> monthlist = new ArrayList<String>(12);
    AverageTemperature AvgTemp = new AverageTemperature();
    monthlist.add("January");
    monthlist.add("February");
    monthlist.add("March");
    monthlist.add("April");
    monthlist.add("May");
    monthlist.add("June");
    monthlist.add("July");
    monthlist.add("August");
    monthlist.add("September");
    monthlist.add("October");
    monthlist.add("November");
    monthlist.add("December");
    AvgTemp.Temp[0] = 45;
    AvgTemp.Temp[1] = 40;

    for (int index = 0; index < monthlist.size(); index++)
    {
        for (index = 0; index < monthlist.size(); index++)
        {
        System.out.print("The average temp for ");
        System.out.print(monthlist.get(index));
        System.out.println(" is " + Arrays.toString(AvgTemp.getTemp()));
        /**System.out.println("Temperature at index " + (index + 1) +
                " is: " + Arrays.toString(AvgTemp.getTemp()));
        */
         }
    }
}

}

public class AverageTemperature {
   private double AvgTemp;
   double[] Temp = new double[12];

   public AverageTemperature()
   {
      AvgTemp = 0.0;
   }
   public void setTemp(double[] t)
   {
      Temp = t;
   }
   public double [] getTemp()
   {
      return Temp;
   }
}

我不确定AverageTemperature类的意义是什么。它似乎只是一个围绕数组的包装器。我会假设这是一个正在进行的工作,并忽略它。

getTemp()返回所有月份临时工的数组。您需要为该数组编制索引以打印单个值:

for (int index = 0; index < monthlist.size(); index++)
{
    // Why are there 2 for loops?
    //for (index = 0; index < monthlist.size(); index++)
    //{
    System.out.print("The average temp for ");
    System.out.print(monthlist.get(index));
    // Don't use toString, just index the array
    System.out.println(" is " + AvgTemp.getTemp()[index]);
    //}
}

或:

double[] avgTemps = AvgTemp.getTemp();
for (int index = 0; index < monthlist.size(); index++)
{
    System.out.print("The average temp for ");
    System.out.print(monthlist.get(index));
    System.out.println(" is " + avgTemps[index]);
}

对我来说,让getTemp()索引并返回单个值会更合乎逻辑。与setTemp()相同:

public class AverageTemperature {
   private double AvgTemp;
   // Make this private too
   private double[] Temp = new double[12];
   public AverageTemperature()
   {
      AvgTemp = 0.0;
   }
   public void setTemp(int index, double value)
   {
      // TODO: Add some index bounds checking
      Temp[index] = value;
   }
   public double getTemp(int index)
   {
      // TODO: Add some index bounds checking
      return Temp[index];
   }
}

然后,将代码更改为:

AvgTemp.setTemp(0, 45);
AvgTemp.setTemp(1, 40);
for (int index = 0; index < monthlist.size(); index++)
{
    System.out.print("The average temp for ");
    System.out.print(monthlist.get(index));
    System.out.println(" is " + AvgTemp.getTemp(index));
}

您可能还想查看可用于使内容更具可读性的Month Enum

最新更新