【问题标题】:get the index of an array for a patrticular value获取特定值的数组索引
【发布时间】:2013-08-26 13:41:33
【问题描述】:
ArrayIndex|Value|运行总计 ------------------------------------------- 0 | 6 | 6 1 | 1 | 7 2 | 6 | 13 3 | 2 | 15 I:数组索引 V:值 R:运行总数

我需要为给定的运行总计选择适当的索引,例如 12 是给定的运行总数,所以适当的索引是 2,我将把我的代码块放在下面它不起作用我尝试过使用 break;在if语句之后,任何人都可以帮我解决这个问题:)

int running_total = 0;
boolean v=false;
    for(int x=0;x<=array.length;x++)
        {
        running_total+=array[x];
        if(running_total>=12)
            {
            if(v==false)
                {
                v= true;
                othermethods(x);
                }
            }
        }

【问题讨论】:

  • 使用x&lt;array.length 代替x&lt;= 并避免使用非声明性变量.. 在if(v == false) 中将其替换为if(!v) 并避免使用too if!你只能使用if(running_total &gt;= 12 &amp;&amp; !v)
  • 它是一个仅由String[] 数组组成的 3 维数组,其元素组成为I|V|R 吗?
  • @nachokk 的建议是正确的。 Java 中的索引从 0 到 n - 1,其中 n 是数组的长度。

标签: java arrays algorithm search


【解决方案1】:

您的方法中唯一的错误是您让x 运行到array.length(含),当总数小于12 时导致ArrayIndexOutofBoundsException 崩溃。

将您的代码更改为

for(int x=0 ; x < array.length ; x++) {
    ...
}

为了避免崩溃。

另一个“风格要点”是,不是写v==false,而是写!v。最后,由于意图是在找到运行总数满足条件的第一个索引后停止调用othermethods(x),因此您可以使用break 而不是布尔变量重写循环:

for(int x=0 ; x < array.length ; x++) {
    running_total+=array[x];
    if(running_total >= 12) {
        othermethods(x);
        break;
    }
}

【讨论】:

  • 并且只使用 if! if(something){ if(otherThing){//some code} } } 只需使用if(something &amp;&amp; otherThing)
【解决方案2】:
for(int x=0;x<array.length;x++)

长度从0n - 1,因此将循环中的&lt;= 更改为&lt;

【讨论】:

    【解决方案3】:
    int running_total = 0;
    int x = 0;
    for(x=0; x<array.length, running_total < 12; x++){
    running_total += array[i];
    }
    
    //required index is x+1
    

    【讨论】:

      猜你喜欢
      • 2014-02-27
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多