怎么能够截取一个数组的一部份?

rabbitbug 2008-11-26 07:36:41
我是想去掉数组中不要的部份
比如
int[] a = {1,2,3,7,2,0,0,0,0};
怎么能够把后面0去掉得到下面的数组?
int[] b = {1,2,3,7,2};

...全文
17877 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
dopicou 2010-11-19
  • 打赏
  • 举报
回复
你们真垃圾!垃圾得我想吐
sagezk 2008-11-28
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 rabbitbug 的回复:]
System.arrayCopy不支持int[],必须是Object[]
不过有办法了
[/Quote]

支持,你看错了
rabbitbug 2008-11-28
  • 打赏
  • 举报
回复
System.arrayCopy不支持int[],必须是Object[]
不过有办法了
likgui 2008-11-27
  • 打赏
  • 举报
回复
方法很多,最简单就是循环把每个元素copy
pubaolin 2008-11-27
  • 打赏
  • 举报
回复
UP一下
楼主的问题前几天刚解决,方法和SF的方法一样
gongfuliang 2008-11-27
  • 打赏
  • 举报
回复
使用System.arrayCopy();
rascalboy520 2008-11-27
  • 打赏
  • 举报
回复

public int[] getSubArray(int n) {
int[] a = {1,2,0,1,1,0,0,0,0,0,0,0,0,0};
int index = 0;
for(int i = a.length -1;i > 0;i--) {
if(n != a[i]) {
index = i + 1;
break;
}
}
int[] b = new int[index];
for(int i = 0; i < index; i++) {
b[i] = a[i];
}
return b;
}

个人认为直接操作数组是效率最快的,如果转为String,再对其处理,最后同样要做相似的操作,反而会影响效率!
tjg5202 2008-11-27
  • 打赏
  • 举报
回复
学习。。。。。
zhengloushan 2008-11-27
  • 打赏
  • 举报
回复
学习
时光瞄 2008-11-27
  • 打赏
  • 举报
回复
如果数组中重复的元素出现没有规律的话,用System.arraycopy()估计就不行了
chendabian 2008-11-27
  • 打赏
  • 举报
回复
没错 就是 copy


System.arraycopy(src, srcPos, dest, destPos, length)
gordian693 2008-11-27
  • 打赏
  • 举报
回复
把数组转换成List容器类操作,操作完了再转成数组
lgtwboy 2008-11-27
  • 打赏
  • 举报
回复
不用新数组
读原数组加判断
if(idx<n+1)
a[idx];
RJCHEN1985 2008-11-27
  • 打赏
  • 举报
回复
System.arraycopy(src, srcPos, dest, destPos, length)
erlin10 2008-11-27
  • 打赏
  • 举报
回复
public static int[] copyOfRange(int[] original,int from,int to)
将指定数组的指定范围复制到一个新数组。该范围的初始索引 (from) 必须位于 0 和 original.length(包括)之间。original[from] 处的值放入副本的初始元素中(除非 from == original.length 或 from == to)。原数组中后续元素的值放入副本的后续元素。该范围的最后索引 (to)(必须大于等于 from)可以大于 original.length,在这种情况下,0 被放入索引大于等于 original.length - from 的副本的所有元素中。返回数组的长度为 to - from。
sagezk 2008-11-27
  • 打赏
  • 举报
回复
import java.util.Arrays;

public class ArrayUtil {

public static int[] trimIntArray(int[] a) {
if (a == null) throw new NullPointerException("argument a is null");
if (a.length == 0) return a;
int i = a.length - 1;
while (a[i] == 0 && --i >= 0);
if (i == -1) return new int[0];
//before JavaSE6.0
//int[] r = new int[i + 1];
//System.arraycopy(a, 0, r, 0, i + 1);
//return r;
//JavaSE6.0
return Arrays.copyOf(a, i + 1);
}

public static void main(String[] args) {
int[] test = {1, 2, 3, 4, 5, 0, 0, 0, 0, 0, 0};
//test = new int[] {0, 0, 0, 0, 0};
test = trimIntArray(test);
//before JavaSE5.0
//for (int i = 0; i < test.length;) System.out.print(test[i++] + " ");
//JavaSE5.0
System.out.println(Arrays.toString(test));

}

}
shenjie1989 2008-11-26
  • 打赏
  • 举报
回复
把数组转换成字符串,substring(int beginIndex, int endIndex)
wtmiao000 2008-11-26
  • 打赏
  • 举报
回复
如果事先就知道a的位置的话用这段code


public static void main(String[] args) {
int[] a = {1,2,3,7,2,0,0,0,0};
int[] b=new int[5];
参数(要拷贝的数组源,拷贝的开始位子,要拷贝的目标数字,填写的开始位子,拷贝的长度)
System.arraycopy(a, 0, b, 0, 5);

}
perperyu 2008-11-26
  • 打赏
  • 举报
回复
试一试,顺便学习

/**
* 我是想去掉数组中不要的部份
比如
int[] a = {1,2,3,7,2,0,0,0,0};
怎么能够把后面0去掉得到下面的数组?
int[] b = {1,2,3,7,2};

* */
package csdn.question.myanswer;

public class DeleteZero {
public static void main(String[] args) {
int[] arr = {1,2,0,1,1,0,0,0,0,0,0,0,0,0};

int index = 0;//标记后面有多少个连续的0
for (int i = arr.length - 1; i >= 0; i--) {
if(arr[i] != 0) {
break;
}
index++;
}

int[] arrNew = new int[arr.length - index];
for(int i = 0; i < arr.length - index; i++) {
arrNew[i] = arr[i];
}

for (int i : arrNew) {
System.out.println(i);
}
}
}

justinavril 2008-11-26
  • 打赏
  • 举报
回复
我想知道 你这个0的位置是固定呢 也就是说从某个位置开始 剩下的元素都不要 还是说要把数组中的0给剔除掉
加载更多回复(4)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧