Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从数组中删除索引并压缩_Java_Arrays - Fatal编程技术网

Java 从数组中删除索引并压缩

Java 从数组中删除索引并压缩,java,arrays,Java,Arrays,我正在为学校做一个纸牌游戏,我正在尝试实现一种方法来删除指定索引的纸牌,然后压缩阵列 这是我迄今为止的代码(不工作)-有人能给我一些关于我哪里出错的建议吗?谢谢 private boolean removeCardsAt(int[] index){ cards[index] = cards[cards.length - 1]; Card[] newCards = new Card[cards.length - 1]; for( int i = 0; i < newC

我正在为学校做一个纸牌游戏,我正在尝试实现一种方法来删除指定索引的纸牌,然后压缩阵列

这是我迄今为止的代码(不工作)-有人能给我一些关于我哪里出错的建议吗?谢谢

private boolean removeCardsAt(int[] index){
    cards[index] = cards[cards.length - 1];
    Card[] newCards = new Card[cards.length - 1];
    for( int i = 0; i < newCards.length; i++) {
        newCards[i] = cards[i];
        return true;
    }
    return false;
}
private boolean removeCardsAt(int[]索引){
卡片[索引]=卡片[卡片.长度-1];
卡片[]新卡片=新卡片[cards.length-1];
for(int i=0;i
  • 您在
    卡[index]
    上遇到了类型问题:这没有意义,因为
    索引
    是一个数组。也许您想在
    索引的元素上循环
  • 有一个循环可以将元素从一个数组复制到另一个数组。但是,在循环中返回true。这意味着您的循环将只运行一次迭代
  • 您的代码实际上不会在给定索引下压缩阵列或消除卡。也不是很近。这里有一个提示(因为这是家庭作业):现在,您正在将元素从一个数组复制到另一个数组,同时保持索引不变。如果在某些情况下,使旧数组中的索引与新数组中的索引相差一个偏移量,该怎么办

  • 您可能希望在假设只有一张卡需要删除的情况下尝试编写此命令,然后将其推广到多张卡。

    考虑参数paased是要从卡数组中删除的索引数组:-

    private static boolean removeCardsAtIndex(int[] index){
            int cardsLength = cards.length;
            for(int i = 0 ; i < index.length ; i++){
                int paramInt = index[i];
                int numberOfElements = cards.length - paramInt - 1;
                if (numberOfElements > 0) {
                      System.arraycopy(cards, paramInt + 1, cards, paramInt, numberOfElements);
                      cards[(--cardsLength)] = null;
                }
            }
            Card[] newCards = new Card[cardsLength];
            for( int i = 0; i < cardsLength; i++) {
                newCards[i] = cards[i];
    
            }
            if(newCards.length < cards.length){
                return true;
            }
            return false;
        }
    
    private静态布尔removeCardsAtIndex(int[]索引){
    int cardsLength=cards.length;
    for(int i=0;i0){
    System.arraycopy(卡片,参数+1,卡片,参数,numberOfElements);
    卡片[(-cardsLength)]=空;
    }
    }
    卡片[]新卡片=新卡片[cardsLength];
    对于(int i=0;i

    注意:在索引数组上每次迭代后,将索引后的元素从索引位置复制到同一数组上,并且卡元素索引在每次迭代中都会更新。

    索引应为
    int
    (现在为
    int[]
    )类型吗?这没有任何意义。指针不会有多大帮助。我假设她正在解析多个索引以便删除,例如卡片3、4、5@泽菲克。为了回答您的问题,如果没有看到某种实现代码,很难判断。您是否可以将此/预期结果包含在指定索引处的卡片中,并压缩阵列。如果任何索引与卡片不对应,则数组必须保持不变,并且该成员返回false,否则指定的卡片将被删除,数组将压缩并返回true-要删除的数组元素的参数索引-如果成功删除所有元素,则返回true;如果未删除任何元素,则返回false。