【问题标题】:Take a portion of an array in Java在 Java 中获取数组的一部分
【发布时间】:2014-03-25 15:38:09
【问题描述】:

所以我有一串字符,我想在 for 循环中循环。当我到达某个通过布尔检查的字符时,我想在该点之后获取列表中的每个项目并从那里切断。如下:

for (int i = 0; i < charList.length; i++)
{   if (charList[i] == "a")
    {
        //put every char in charList between i and the end into a new variable
    }
}

有什么方法可以做到这一点?推荐哪些?

【问题讨论】:

  • 你有什么问题? indexOf 可以在子字符串上工作,这可能会更好。不确定 Big-Oh 的性能。
  • for 和 if 检查都可以。就是注释掉的部分我不知道怎么办。
  • 您的 if 应该与 'a' 而非 "a" 进行比较(charString)。

标签: java arrays chars


【解决方案1】:

Arrays 集合有一个copyOfRange() 方法

for (int i = 0; i < charList.length; i++)
{   if (charList[i] == 'a')
    {
        char[] newCharList = Arrays.copyOfRange(charList,i,charList.length);//put every char in charList between i and the end into a new variable
        //do stuff
        break;
    }
}

如果需要在for循环外访问新数组,请务必在进入前声明,即

char[] newCharList;
for(...

【讨论】:

  • 我认为作业是创建一个完成此任务的方法。
  • 你不应该也退出循环吗?
  • 这就是我要找的,谢谢! @Luiggi Mendoza,这不是作业;我刚刚尝试进行编程挑战并被语法所吸引。还是谢谢!
  • @SamOfloinn 那么请说明这不是家庭作业。此外,该变量应在外部声明,以便在for 循环之外使用。
【解决方案2】:

在您的if 中,创建一个新的char[],然后将字符放入其中。

char[] substr = new char[charList.length-i];
for (int j = 0; j < charList.length-i; j++) {
    substr[j] = charList[i+j];
}
break; // out of the loop over i

我写了break,但你可能会returning它,或者你会在这个范围之外声明substr。我写的代码只是为了给你一个想法。

我为此制作了一个简单的ideone,以便您可以看到它的工作原理。

【讨论】:

  • 我认为您需要在 OP 发布的 if 中指定此代码。
【解决方案3】:

使用 copyOfRange() 方法:

char[] charListCopy = Arrays.copyOfRange(charList, i, charList.size());

【讨论】:

    猜你喜欢
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 2011-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多