-1
package helloworld;
public class windspeed {

    public static void main(String args[]) {
        int t = Integer.parseInt(args[44]); //this is the array input for temperature
        int v = Integer.parseInt(args[15]); //this is the array input for wind speed
        double x = Math.pow(v, 0.16); //this is the exponent math for the end of the equation
        if (t < 0) {
            t = t*(-1); //this is the absolute value for temperature
        }
        double w = (35.74 + 0.6215*t)+((0.4275*t - 35.75)* x); //this is the actual calculation
        if (t<=50 && v>3 && v<120) { //this is so the code runs only when the equation works
            System.out.println(w);
        }
        if (t>50 || v<3 || v>120){
            System.out.println("The wind chill equation doesn't work with these inputs, try again.");
        }

    }
}

这给了我一个ArrayIndexOutOfBounds错误。我输入什么都没关系[]我得到一个错误......为什么?我该如何解决?

4

5 回答 5

0
int t = Integer.parseInt(args[44]); //this is the array input for temperature
int v = Integer.parseInt(args[15]); //this is the array input for wind speed

argsieargs是 main 方法的命令行参数。argsif not than it will throw ArrayIndexOutOfBounds.你有 45 个元素吗?

要知道长度,请使用:

args.length

比你可以继续。希望能帮助到你。

于 2013-10-24T01:00:43.237 回答
0

原因是

int t = Integer.parseInt(args[44]);

你有 45 个参数吗?

于 2013-10-24T00:35:14.487 回答
0

这里的问题是您创建数组的方式:

int t = Integer.parseInt(args[44]); //this is the array input for temperature
int v = Integer.parseInt(args[15]); //this is the array input for wind speed  

args指的是传递给main()程序方法的命令行参数。如果您尝试在args[44]没有 45 个参数(0 索引,还记得吗?)时进行解析,您最终将分配null给您的数组。

因此,您稍后将得到的只是ArrayIndexOutOfBoundsException因为您无法索引空数组。

int t[] = new int[44]; // please notice the brackets
int v[] = new int[15]; //this is the array input for wind speed  

如果您只需要尺寸,上述方法就足够了

  1. Java 中的数组是int[] tint t[]。他们中的任何一个都可以,但括号需要在那里。
  2. 用于Math.abs()求绝对值。为您节省if()
于 2013-10-24T00:38:56.300 回答
-1

在这些行中:

int t = Integer.parseInt(args[44]); //this is the array input for temperature
int v = Integer.parseInt(args[15]); //this is the array input for wind speed

你说你用至少 45 个参数运行你的程序!!15. 位置是风速,44. 是温度。

您可能运行的程序根本没有参数或只有一个参数。

请注意,如果您使用参数运行程序:“hello world how are you”,该程序将具有大小为 5 的 args 并具有helloin args[0]worldinargs[1]等。

于 2013-10-24T00:34:41.277 回答
-1

您现在拥有的是: - 将第 15 个命令行参数转换为整数;- 获取第 44 个命令行参数并将其转换为整数。你确定这是你需要的吗?

于 2013-10-24T00:35:40.027 回答