gpt4 book ai didi

java - 如何在java中剪切数组的一部分

转载 作者:行者123 更新时间:2023-12-01 12:04:11 26 4
gpt4 key购买 nike

我必须在java中编写一个方法,其中输入一个数字数组“a”和一个数字“x”,返回一个元素数组,该元素遵循“a”中最后一次出现的“x”。例如输入为 {0,1,2,3,4,5,6,7,8,9} 且 x=6 时,该方法必须返回 {7,8,9},同时返回 {4,1,4,2} 和x =4 该方法必须返回 {2},如果 x 不在“a”中,则它必须返回空数组 {}(或长度为 0 的数组)

到目前为止,我们还没有研究类或对象。这是我们迄今为止制作的另一个程序的示例

boolean arrayIncluso( int[] s,int[] t ) {

boolean flag=true;
for(int i=0;i< s.length;i++){
int c1 = 0 ;
int c2 = 0 ;
for(int j=0;j< s.length;j++){
if(s[i] == s[j]){
c1 ++;
}
}

for(int j=0;j< t.length;j++){
if(s[i] == t[j]){
c2 ++;
}
}

if(c1 > c2)

flag= false;
}
return flag;
}

谁能给我解释一下吗为什么这样

t[i-idx-1 ] = s[i];

而不是这个

     for(int j=0;j<t.length;j++){
t[j]=a[i];
}
return t;

最佳答案

您可以将问题分为两部分:

  1. 查找字符x的最后一个索引。这可以使用简单的 for 循环来完成。

    int idx = -1;
    for (int i = 0; i < s.length; i++) {
    if (s[i] == x) idx = i;
    }
  2. 找到该索引后,从该元素开始创建一个新数组。它可以通过第二个(非嵌套)for 循环来完成,或者您可以使用 Arrays.copyOfRange()

    //make sure idx != -1
    int[] t = new int[s.length - idx - 1];
    for (int i = idx+1; i < s.length; i++)
    t[i-idx-1 ] = s[i];
    System.out.println(Arrays.toString(t)); //print to make sure it's all fine

或者

    t = Arrays.copyOfRange(s, idx+1, s.length);
System.out.println(Arrays.toString(t));

关于java - 如何在java中剪切数组的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765329/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com