无法使用三的倍数循环参数。 (福利局)

时间:2013-02-28 00:15:54

标签: java

此程序的目标是运行诸如“K6V3 20.2 17.4”之类的参数,并使用Weather类根据最后2个数字参数计算windchill,并使用第一个参数作为该区域的简写名称。当程序被赋予args三倍的时候遇到问题,例如“K6V3 20.2 17.4 KCHO 40.0 10.0”我不知道如何在第三个arg之后重新启动循环。我的程序将采用前三个args并显示正确的信息,但它只会重复第二个三个args的信息。到目前为止,这是我的代码,HELP!?!?!

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);
            }
        }
    }
}

2 个答案:

答案 0 :(得分: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);
}

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

答案 1 :(得分: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);
     }
   }
 }
}