Results 1 to 8 of 8
  1. #1
    Get_tanked is offline Member
    Join Date
    Jan 2011
    Posts
    24
    Rep Power
    0

    Default Need help with inserting a new number into an array

    I have to write some code that will take an array of positive integers and look at each index. The rules are that once the program finds a zero it will stop looking at the array and only use the numbers before the zero was found. For example the numbers I use in the array are 1,2,3,4,0 it would have look at 1,2,3,4. I also have to write some methods to go along with it. The part that I cant seem to figure out is a method called insert, where it will try to insert an integer into the array if the integer isnt already in the array. The inserted number has to trade places with the zero and push the zero back one index. For example, I wanted to insert a 7 into 1,2,3,4,0 it should come out as 1,2,3,4,7,0 but for some reason ever time no matter what I try the 7 is completely ignored. I've almost finished the code but for some reason when I try to insert the 7 it wont insert, even though it looks as though my code is correct (at least according to me :p). I would really appreciate if someone could help me out on this its slowly been driving me insane for the past 3 days.

    Java Code:
    import java.util.Arrays;
    
    public class Intcolls1 
    {
    	 private int[] c;
    	 
    	   public Intcolls1(int i)
    	   {
    	      c = new int[i];
    	      c[0] = 0;
    	   }
    
    	   public void setc() // this is what i used to set the integers into the array. it produces an array {1,2,3,4,0} 
    	   {
    		   int x = 1;
    		   
    		   for(int i = 0; i < c.length; i++)
    	       {
    			   c[i] = x;
    			   x++;
    			   if(c[i] == 5)
    			   {
    				   c[i] = 0;
    			   }
    	       }
    	   }
    	   
    	   public void insert(int i) // This is the part i cant figure out where i insert the integer in the array
    	   {
    		   
    		   int j = 0;
    		   while((c[j] != 0)&&(c[j] != i)) // finds the zero or if the int being inserted is already in the array  
    		   {
    				j++;
    		   }
    		   if (c[j] == i)
    		   {
    				System.out.println("The number is already in the array");
    		   }
    		   if (c[j] == 0)
    		   {
    			   if (j == c.length - 1) // incase my array is starting to go out of bounds and needs to be bigger
    			   {
    				    
    					int[] d = new int[c.length * 2]; // creates a new array thats twice to length of the old to make more room
    					for(int k = 0; k < c.length; k++) // copies the old array into the new array
    					{
    						d[k] = c[k];
    					}
    					c = d; // this is where im having trouble i want to make the c's pointer point at d and get its properties
    	
    			   }
    			   c[j] = i; // These next two lines are the actual insert and dont seem to do anything at all
    			   c[j++] = 0;
    
    			}
    			  
    	   }
    
    	  public void print() // prints the array, when the array prints i get 1,2,3,4,0,0,0,0,0,0 with no 7 in there
    	   {
    		   for (int i = 0; i < c.length; i++)
    	       {
    			   System.out.print(c[i]);
    	       }
    	   }
    	    public static void main(String[] args)
    	    {
    		  int i;
    		  Scanner kb;
    		  kb = new Scanner(System.in);
    		  
    		  Intcolls1 b = new Intcolls1(5);
    			
    		  System.out.println("Enter a number to insert to the array");
    		  i = kb.nextInt();
    		 
    		  b.setc();
    		  b.insert(i);  
    		  b.print();
    	    }
    
    
    }

  2. #2
    Junky's Avatar
    Junky is offline Grand Poobah
    Join Date
    Jan 2011
    Location
    Dystopia
    Posts
    3,798
    Rep Power
    7

    Default

    Does the array need to remain sorted?

    If the array is [1 2 4 5 0] and I insert 3, does the array become [1 2 3 4 5 0] or [1 2 4 5 3 0]?

  3. #3
    quad64bit's Avatar
    quad64bit is offline Moderator
    Join Date
    Jul 2009
    Location
    VA
    Posts
    1,323
    Rep Power
    7

    Default

    Java Code:
    c[j++] = 0;
    //should be
    c[++j] = 0;
    j++ will look at index j, then increment j.
    ++j will increment j, then look at the new index j!

    also, your line
    Java Code:
    c = d;
    is correct and does what you intend it to, don't worry about it :D

  4. #4
    quad64bit's Avatar
    quad64bit is offline Moderator
    Join Date
    Jul 2009
    Location
    VA
    Posts
    1,323
    Rep Power
    7

    Default

    I forgot to explain - for example:
    Java Code:
    int[] a = {1,2,0,...}
    j = 2;
    //insert 7
    a[j] = 7;      //set index 2 to 7
    a[j++] = 0; //set index 2 to 0, then increment j to 3
    See why that would fail and ignore 7 every time?

  5. #5
    Junky's Avatar
    Junky is offline Grand Poobah
    Join Date
    Jan 2011
    Location
    Dystopia
    Posts
    3,798
    Rep Power
    7

    Default

    Another clarification needed.

    Are there any numbers after the zero? If not then there is no need to do any "pushing". If the array is [1 2 3 0 0 0] and inserting 4 the array become [1 2 3 4 0 0]. All you need ot do is store 4 at the approriate index and nothing else.

  6. #6
    Get_tanked is offline Member
    Join Date
    Jan 2011
    Posts
    24
    Rep Power
    0

    Default

    thanks quad64bit works perfectly now!

  7. #7
    Get_tanked is offline Member
    Join Date
    Jan 2011
    Posts
    24
    Rep Power
    0

    Default

    I dont actually think that order matters. Also the numbers behind 0 dont matter, all that matters is that there is room in the array to insert more numbers.

  8. #8
    Junky's Avatar
    Junky is offline Grand Poobah
    Join Date
    Jan 2011
    Location
    Dystopia
    Posts
    3,798
    Rep Power
    7

    Default

    You can make the code more efficient. If you store the index of where the zero is you do not have to search for it everytime you insert a number. Do that and your insert method gets reduced to 2 lines of code, supplied by Quad.

Similar Threads

  1. Replies: 6
    Last Post: 11-03-2010, 02:33 PM
  2. Replies: 2
    Last Post: 09-06-2010, 01:03 AM
  3. Finding a number in array close to another number
    By SteroidalPsycho in forum New To Java
    Replies: 2
    Last Post: 02-15-2010, 12:37 AM
  4. Inserting input into array
    By brmcdani in forum New To Java
    Replies: 3
    Last Post: 02-05-2010, 02:33 PM
  5. Replies: 0
    Last Post: 04-14-2008, 08:39 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •