• Post Reply
  • Bookmark Topic Watch Topic
  • New Topic

from a 2d array to a regular array....

 
Brandi Love
Ranch Hand
Posts: 133
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I wrote this program to take the individual values from a 4 by 5 array and put them into a single dimensional array, but all I get when I run the program is a bunch of 3s. Can anyone tell me what is wrong with my code?
 
Ernest Friedman-Hill
author and iconoclast
Marshal
Pie
Posts: 24211
35
Chrome Eclipse IDE Mac OS X
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Your i loop iterates over each element of the 1d array. The j and k loops visit every element of the 2d array in turn and assign it into the i'th element of the 1d array. The very last assignment is to assign the last 2d element (3) to the i'th element of the 1d array, so every element ends up being 3 -- plus you've done 20 times more assignments than are necessary!
To fix: remove the loop over i altogether. Inside the k loop, compute the value of i (i.e., the index into the 1d array) as a function of j and k. The right equation is
i = j * array[0].length + k
 
Joel McNary
Bartender
Posts: 1840
Eclipse IDE Java Ruby
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
The problem is that you're looping on i. What you're told the computer to do is:
For each 1 from 1 to 20, place each element of array[j][k] into sort[i].
Therefore, each time through the outermost loop, you place each value in sort[i]. The final element is a 3, so that is what gets left there.
Consider not using an outer foor loop and instead assigning i = 0 to start. Then, after you populate sort[i], increment i by one.
 
Brandi Love
Ranch Hand
Posts: 133
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
I've got it Thank ya gents.
 
  • Post Reply
  • Bookmark Topic Watch Topic
  • New Topic