【问题标题】:Average from arguments参数的平均值
【发布时间】:2013-12-05 17:26:27
【问题描述】:

我有这段代码可以从 args 中获取平均值:

public class Mariamne
{
    public static void main(String[] args)
    {
        System.out.print("\n");
        try
        {
            int sum = 0;
            float prom = 0;
            for (int i = 0; i<=args.length; i++)
            {
                int a = Integer.parseInt(args[i]);
                sum = a + sum;
                prom = prom + 1;
            }
            System.out.println(sum/prom);
        }
        catch(Exception e)
        {
            System.out.println("Error.");
        }
    }
}

由于某种原因我无法让它工作(除了它说“数组越界”),有没有办法定义参数的大小?请帮忙!

【问题讨论】:

  • 您应该在发布之前进行调试 :p 您会注意到您只能在某一时刻越界,而实际上它确实会出现过度循环。我这么说是因为您似乎知道 0 索引。见下文。要打印的东西:当前使用的索引,数组的长度。 #Indexes = 长度 + 1
  • 应该是i &lt; args.length,因为第一个是0

标签: java average args


【解决方案1】:

您正在尝试访问索引args.length。将您的 for 更改为此

for (int i = 0; i < args.length; i++) // Without the = in the condition

在任何数组中,最大可访问索引始终为array.length - 1。这就是为什么当您尝试访问args 数组中的args.length 索引时,它会抛出ArrayIndexOutOfBoundsException

【讨论】:

  • 谢谢!!效果很好。所以你的意思是,如果一个数组有 2 个元素,它的长度实际上是 1?
  • 不,它的长度是2,但是最高索引是1。
  • 不,如果数组有 2 个元素,它的长度是 2,但是数组有从 0 开始的索引。这两个值存储在索引array[0]array[1] 中。如果你尝试做array[2],它在技术上意味着第三个元素,但是嘿,你的数组只有两个元素。 :)
【解决方案2】:

对于 int 变量 i,您超出了 args 的索引限制。 索引可以在 0 到 len-1 之间。 只需将i&lt;=args.length 替换为i&lt;args.lengthi&lt;=args.length-1

【讨论】:

    猜你喜欢
    • 2012-06-08
    • 1970-01-01
    • 2022-11-03
    • 2016-08-01
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多