1

该程序的目标是运行诸如“K6V3 20.2 17.4”之类的参数,并使用 Wea​​ther 类根据最后 2 个数字参数计算风寒,并将第一个参数用作区域的简写名称。当程序以三的倍数给出参数时遇到问题,例如“K6V3 20.2 17.4 KCHO 40.0 10.0”我不确定如何在第三个参数之后重新启动循环。我的程序将采用前三个参数并显示正确的信息,但它只会为后三个参数重复该信息。到目前为止,这是我的代码,帮助!?!?!

public class ChillMapper {
    public static void main(String args[]) {
        double ICAO;
        double t;
        double v;
        double windChill;

        for (int i = 0; i < args.length / 3; i++) {
            if (args.length % 3 == 0) {
                ICAO = Text.toDouble(args[0]);
                t = Text.toDouble(args[1]);
                v = Text.toDouble(args[2]);
                windChill = Weather.windChillNA(t, v);
                Map.setTemperature(args[i], windChill);
            }
        }
    }
}
4

2 回答 2

3

以这种方式编写循环可能更简单:

for (int i = 0; i < args.length; i+=3)
{
    ICAO = Text.toDouble(args[i+0]);
    t = Text.toDouble(args[i+1]);
    v = Text.toDouble(args[i+2]);
    windChill = Weather.windChillNA(t,v);
    Map.setTemperature(ICAO,windChill);
}

不是每次都检查 if i%3==0,而是按 3 步跳。(你最好检查一下参数长度本身是3 的倍数,我把它留给你作为练习)。然后分别在索引 i、i+1、i+2 处获取参数。

于 2013-02-28T00:19:34.963 回答
0

你有硬编码的数组索引。改用变量“i”:

public class ChillMapper
{
public static void main(String args[])
{
    double ICAO;
    double t;
    double v;
    double windChill;

   int i = 0;
   if (args.length % 3 == 0)
   {
      while (i < args.length)
      {
         ICAO = Text.toDouble(args[i]);
         t = Text.toDouble(args[++i]);
         v = Text.toDouble(args[++i]);
         windChill = Weather.windChillNA(t,v);
         Map.setTemperature(args[i],windChill);
     }
   }
 }
} 
于 2013-02-28T00:23:44.707 回答