在一个一维数组中,如果已经存在一个一维数组,需要把其他不为零的项,存入一个新的一维数组中?
麻烦,最好上java代码,谢谢!!!

解决方案 »

  1.   


    public class Test07 { public static void main(String[] args) {
    int[] arr1 = {1,2,3,4,5,0,0,0,8,9};
    int[] arr2 = new int[10];
    int j = 0;
    for(int i=0;i<arr1.length;i++){
    if(arr1[i] != 0){
    arr2[j++] = arr1[i];
    }
    }
    for(int i=0;i<arr2.length;i++){
    System.out.println(arr2[i]);
    }
    }}
      

  2.   

    class TestDemo 
    {
    public static void main(String[] args) 
    {
    int[] oldArr={1,3,4,5,0,0,6,6,0,5,4,7,6,7,0,5};
    int[] newArr=new int[count(oldArr)];
    copy(oldArr,newArr);
    print(newArr);
    }//统计所有不为0的元素的个数 public static int count(int[] data)
    {
    int count=0;
    for(int x=0;x<data.length;x++)
    {
    if(data[x]!=0)
    {
    count++;
    }
    }
    return count;
    }//将旧数组中的不为0的元素拷贝到新的数组之中 public static void copy(int[] src,int[] data)
    {
    int foot=0;//表示数组的下标
    for(int x=0;x<src.length;x++)
    {
    if(src[x]!=0)
    {
    data[foot++]=src[x];//取出里面不为0的内容
    }
    }
    } public static void print(int[] data)
    {
    for(int x=0;x<data.length;x++)
    {
    System.out.print(data[x]+"、");
    }
    }
    }
      

  3.   

    :-),我也凑个热闹,换了一种思路public class TestA {
    /**
     * @param args 
     * 
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] array = {1,2,3,5,8,0,6,7,8,0};//定义一个含零的数组
    int count = 0;//定义个计数器,计算数组中含几个零
    /*
     * 用for循环把0放到了数组末尾,并计算出含了多少个0
     */
    for(int i = 0;i < array.length - 1 ; i++){
    if(array[i] == 0){
    count++;
    System.arraycopy(array,i+1,array,i,array.length - i - 1);
    }
    }//end for
    int[] newArray = new int[array.length - count];//创建一个新数组,由于已经计算出来含多少0,所以不再浪费空间
    System.arraycopy(array,0,newArray,0,newArray.length);//把除去末尾含0的数组项全部复制到新数组中,大功告成。
    for(int a:newArray){
    System.out.println(a);
    }
    }
    }
      

  4.   

    有一个小问题,修改了下public class TestA {
    /**
     * @param args 
     * 
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] array = {1,2,3,5,0,4,6,7,8,0,1};//定义一个含零的数组
    int count = 0;//定义个计数器,计算数组中含几个零
    /*
     * 用for循环把0放到了数组末尾,并计算出含了多少个0
     */
    for(int i = 0;i < array.length ; i++){
    if(array[i] == 0){
    count++;
    System.arraycopy(array,i+1,array,i,array.length - i - 1);
    }
    }//end for
    int[] newArray = new int[array.length - count];//创建一个新数组,由于已经计算出来含多少0,所以不再浪费空间
    System.arraycopy(array,0,newArray,0,newArray.length);//把除去末尾含0的数组项全部复制到新数组中,大功告成。
    for(int a:newArray){
    System.out.println(a);
    }
    }
    }
      

  5.   

    不好意思,open4u,你的这个程序依然还是有点问题,你的不能识别出数组中如果存在连续的0的情况,如1,0,2,0,0,1
      

  6.   


    package com.test;import java.util.Scanner;public class TestMain {

    public static void main(String[] args){

    numToUpperTest();
    }

    public static void numToUpperTest(){
    System.out.println("输入>>>>>\n");

    Scanner sc = new Scanner(System.in);

    int m = sc.nextInt();

    String s = m+"";

    char[] ch2 = s.toCharArray();

    System.out.println("你输入的是" + s);

    String str = "";

    A: for(int i = (s.length() - 1); i >= 0;i--){


    if(i < (s.length()-1) && ch2[i] == ch2[i+1] && ch2[i] == '0'){ 

    }else{

    if(!( ch2[i] == '0' )){
    str=ch2[i]+str;
    }

    }
    }
    //除去最后一个零

    if(str.charAt(str.length()-1) == '0' ){
    str = str.substring(0 , str.length()-1); //实现消除末尾的方法
    }

    System.out.println("经过转化的数为  :" + str );

    }
    }
      

  7.   

    貼錯了package com.test;import java.util.Scanner;public class TestMain {

    public static void main(String[] args){

    numToUpperTest();
    }

    public static void numToUpperTest(){
    System.out.println("输入>>>>>\n");

    Scanner sc = new Scanner(System.in);

    int m = sc.nextInt();

    String s = m+"";

    char[] ch2 = s.toCharArray();

    System.out.println("你输入的是" + s);

    String str = "";

    A: for(int i = (s.length() - 1); i >= 0;i--){


    if(i < (s.length()-1) && ch2[i] == ch2[i+1] && ch2[i] == '0'){ 

    }else{

    if(!( ch2[i] == '0' )){
    str=ch2[i]+str;
    }

    }
    }
    //除去最后一个零

    if(str.charAt(str.length()-1) == '0' ){
    str = str.substring(0 , str.length()-1); //实现消除末尾的方法
    }

    System.out.println("经过转化的数为  :" + str );

    }
    }
      

  8.   


    public int[] arrayPlus(int[] array){
    int[] temp=new int[array.length];
    int j=0;
    for(int i=0;i<array.length;i++){
    if(array[i]!=0){
    temp[j]=array[i];
    j++;
    }
    }
    int[] result=new int[j];
    System.arraycopy(temp, 0, result, 0, j);
    return result;
    }估计楼主不是不懂写  可能楼主是想性能再稍微好一些吧   那么这时候借鉴别人也是一个不错的注意  楼主这个是我能写的最好性能的了  
      

  9.   

    public class TestA {
    /**
     * @param args 
     * 
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int[] array = {1,2,3,0,6,7,8,0,1};//定义一个含零的数组
    int count = 0;//定义个计数器,计算数组中含几个零
    /*
     * 用for循环把0放到了数组末尾,并计算出含了多少个0
     */
    for(int i = 0;i < array.length ; i++){
    if(array[i] == 0){
    count++;
    System.arraycopy(array,i+1,array,i,array.length - i - 1);
    i--;
    }
    }//end for
    int[] newArray = new int[array.length - count];//创建一个新数组,由于已经计算出来含多少0,所以不再浪费空间
    System.arraycopy(array,0,newArray,0,newArray.length);//把除去末尾含0的数组项全部复制到新数组中,大功告成。
    for(int a:newArray){
    System.out.println(a);
    }
    }
    }ok了,只要再次判断一下,就好了,加了一个i--的语句,:-),是我大意了。
      

  10.   

    import java.util.Arrays;public class ArrayTest {
    public static void main(String[] args) {
    int[] ary=new int[]{1,3,5,6,0,0,9};
    int[] ary1=new int[]{};
    int j=0;
    for(int i=0;i<ary.length;i++)

    {    
    if(ary[i]==0)
    {
    continue;
    }
    ary1=Arrays.copyOf(ary1, ary1.length+1);
            ary1[j++]=ary[i];



    }
    System.out.println(Arrays.toString(ary1));
    }}
    这个是用数组扩容做的
      

  11.   


    public class Main {    public static void main(String[] args) {
            int[] arr1 = {1, 2, 3, 4, 5, 0, 0, 0, 8, 9, 5, 8, 7, 9, 10, 4, 5, 8, 1, 5};
            int[] arr2 = new int[100];
            int j = 0;
            for(int i = 0; i < arr1.length; i++){
                if(arr1[i] != 0){
                    arr2[j++] = arr1[i];
                }
            }
            for(int i = 0; i < arr2.length; i++){
                System.out.println(arr2[i]);
            }
        }}
      

  12.   


    public class Qvo {
    public static void main(String[] args) {
           
            int[] array = {1,2,3,0,61,0,0,7,8,0,1};
            ArrayList<Integer> w=new ArrayList<Integer>();
            for(int i=0;i<array.length;i++){
                if(array[i] != 0){
                    w.add(array[i]);
                }
            }
            System.out.println(w); }}
      

  13.   

    用集合的removeAll方法可以求差值,以便于扩展,如删除原数组中不含0,2,5的项等。0的话就写一个
    可能是我想多了。。
    import java.util.ArrayList;
    import java.util.Arrays;public class Test { public static void main(String[] args) {
    Integer[] myArray = fun(new Integer[]{1,2,0,9,0,2,3},new Integer[]{0,2,5});
    for(Integer integer : myArray)
    System.out.print(integer + " ");
    } static Integer[] fun(Integer[] array,Integer[] removeArray){
    ArrayList<Integer> arrayList1 = new ArrayList<Integer>();
    ArrayList<Integer> arrayList2 = new ArrayList<Integer>();
    arrayList1.addAll(Arrays.asList(array));
    arrayList2.addAll(Arrays.asList(removeArray));
    arrayList1.removeAll(arrayList2);
    Integer[] newArray = new Integer[arrayList1.size()];
    arrayList1.toArray(newArray);
    return newArray;
    }
    }
      

  14.   

    System.arraycopy(  各位都喜欢用这个方法吗?  我还是情愿自己循环那个数组如果让我写,我就先排序那个数组,把 0 放一边,然后就好办了。