java


Could anyone explain how its work? [duplicate]


I'm trying to understand the following Java exercise. Even running the debugger I don't understand the details of the second and third printout:
1, 2, 3, 4
1, 2, 4, 4
1, 2, 4, 8
I understand that the first print is the array as it is, second line prints [2] element of the array and third line [3] element. Here is the code:
public class TR1
{
public static void main(String[] args)
{
int[] v = {1, 2, 3, 4 };
print(v);
x(v, v[2] - 1);
print(v);
x(v, v[3] - 1);
print(v);
}
public static void x(int array[], int y)
{
array[y] = array[y - 1] * 2;
}
public static void print(int array[])
{
System.out.print(array[0]);
for (int i = 1; i < array.length; i++)
System.out.print(", " + array[i]);
System.out.println();
}
}
Let's see what this method does :
public static void x(int array[], int y)
{
array[y] = array[y - 1] * 2;
}
It takes the value at index y-1, multiplies it by 2, then assigns this result to the index y .
Starting array : {1,2,3,4}
The call with v[2] - 1 takes the value at index 2 (which is 3), and substracts 1, so we have y = 2.
From what we said before, the method takes the value at index 1 (y-1) which is 2, multiplies it by 2 so we get 4, and assigns that to the index 2 (y) .
Current array : {1,2,4,4}
The call with v[3] - 1 takes the value at index 3 (which is 4), and substracts 1, so we have y = 3.
From what we said before, the method takes the value at index 2 (y-1) which is 4, multiplies it by 2 so we get 8, and assigns that to the index 3 (y) .
Current array : {1,2,4,8}
Lets briefly walk you through the first things that happen. You start with this array:
1 2 3 4
No surprise when printing that.
Then you run:
x(v, v[2] -1 ) ... evaluates to
x(v, 3 - 1) ... evaluates to
x(v, 2)
Which changes the array based on:
array[y] = array[y - 1] * 2;
Lets insert y as 2 (see above):
array[2] = array[1] * 2;
array[2] = 2 * 2;
leading to:
1, 2, 4, 4
So, the real answer is: you don't even need a debugger. A piece of paper, a pen and a bit of thinking is even more efficient to uncover the "secrets" here.
print always prints the entire array. x and y are making changes to the array in between.
Keep in mind that v[x] is just an integer. For example, v[2] is initialy just 3, so v[2] - 1 = 2. Hence it modifies v[2] between the first and second call to print.

Related Links

Does MySQL Connector/J buffer rows when “streaming” a ResultSet?
Return Type incompatible with Object.getClass()
docker file not found
JOptionPane.showMessageDialog inside PropertyChangeListener causes unexpected behavior
Java Replace String with two (or more) expressions
Receiving RTSP video streams to multiple canvas using vlcj
ColdFusion - HTTP chunk missing first character
How to update logback.xml in java programmatically
Best way to repeat the page from one source number of times while keeping each page running separately?
Iterating a list of Strings in Java [duplicate]
Compilation order of instance initializer blocks
Create the UNIX Echo class in Java
Steganography in java isn't working
LDAP authentication from spring mvc
Java JFrame code giving Null Pointer Exception [duplicate]
IOException : javax.net.ssl.SSLHandshakeException: SSL handshake aborted: ssl=0xafdb8e00: I/O error during system call, Connection reset by peer

Categories

HOME
pdf
wso2
fluentd
ngrx
sqlite-net-extensions
analysis
cmd
baqend
alpha
fingerprint
enterprise-library-5
primary-key
google-cloud-spanner
circular-dependency
circuit
decimal
netflix
amazonsellercentral
facebook-instant-articles
core-text
restful-authentication
trading
xpages-ssjs
qhull
sparse-matrix
facet
fluentvalidation
publish
gsmcomm
twilio-api
xquery-3.0
airconsole
grails-3.1
atl
overlap
file-format
restlet
objectlistview
ansible-playbook
temporary-files
google-closure
firebase-admin
nand2tetris
arena-simulation
logfiles
apache-fop
python-c-api
blogengine.net
statsd
typed-lambda-calculus
android-cursor
pdfclown
mako
query-performance
google-cdn
medium.com
azure-sdk
intrusion-detection
login-control
asp.net-4.5
websitepanel
disque
sigabrt
superstack
spim
marching-cubes
simple-framework
rgeo
sankey-diagram
geonetwork
wordpress-theme-customize
hippomocks
kgdb
flash-builder4.5
comaddin
interface-orientation
html-editor
cassini-dev
mt
cisco-jtapi
google-email-migration
bluepill
getmessage
ticoredatasync
buildr
bigcouch
external-accessory
javax.script
file-comparison
blitz++
createwindow
asp.net-profiles
database-management
data-driven
eqatec
sector
uiq3

Resources

Encrypt Message



code
soft
python
ios
c
html
jquery
cloud
mobile