此程序的目标是运行诸如“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);
}
}
}
}
答案 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);
}
}
}
}