如何将一个数字删除到一个java数组中?

如何将一个数字删除到一个java数组中?

问题描述:

这是一个java中数组的简单程序。 我想删除用户想要的号码,但它不是在我的代码工作,最后两个元素是正常工作,但在元素删除开始不工作,我不想在我的代码中使用ArrayList。 删除数组中存在的用户需要的一个元素。如何将一个数字删除到一个java数组中?

import java.util.Scanner; 

public class delete { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     Scanner in=new Scanner(System.in); 
     System.out.println("pls enter the size of an array:-->"); 
     int n=in.nextInt(); 

     int num[]=new int[n]; 
     for(int k=0;k<num.length;k++) 
     { 
      System.out.println("enter the value:--> "+(k+1)); 
      num[k]=in.nextInt(); 
     } 

     System.out.println("Enter the number to be delete:-->"); 
     int m=in.nextInt(); 

     for(int p=0;p<num.length-1;p++) 
     { 
      if(m==num[p]) 
      { 
        num[p]=num[p+1];  
      } 

     } 

     for(int k=0;k<num.length-1;k++) 
      System.out.println(num[k]); 

    } 

} 
+0

为什么downvotes?完美的代码,一个非常具体的问题/问题。很少看到java标签中的正面投票.. – arynaq 2014-10-19 19:30:19

+0

每个人都认为它不会删除,只包括数组中的下一个数字,并且肯定不会为最后一个元素工作@arynaq – maskacovnik 2014-10-19 19:31:28

+0

对于新手程序员来说,它并不清楚它不会删除。我认为他想要做的是去除第n个元素,用第n + 1个元素覆盖它,然后用第n + 2个元素覆盖第n + 1个元素,等等,直到循环终止于倒数第二个元素。 – Andersnk 2014-10-19 19:34:59

我会建议你使用ArrayList,而不是只是一个阵列(检查更多信息Java文档),但是如果你想要做这种事情应该是这样的:

只需添加这条线

for(int p=0;p<num.length-1;p++) 
    { 
     if(m==num[p]) 
     { 
      num[p]=num[p+1]; 

      // Add this line 
      m = num[p]; 
     } 
    } 

这是因为,当你发现的数量,你只是被改变的下一个元素的值,而不是所有的剩余元素

你应该注意的一件事是你不删除元素,只是覆盖值。