Nested for-loop: giving concatenated result
I am currently finding it hard to grasp the output from a simple nested for-loop
int result = 0;
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
}
Console.WriteLine(result);
Which gives the output of 12. I understand that the result for j is 1 and 2, but just cannot grasp why the final result is 12 instead of 3?
Can someone explain please?
c#
add a comment |
I am currently finding it hard to grasp the output from a simple nested for-loop
int result = 0;
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
}
Console.WriteLine(result);
Which gives the output of 12. I understand that the result for j is 1 and 2, but just cannot grasp why the final result is 12 instead of 3?
Can someone explain please?
c#
Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.
– Anthony Pegram
Jun 10 '18 at 7:53
0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..
– ArgusMagnus
Jun 10 '18 at 7:55
add a comment |
I am currently finding it hard to grasp the output from a simple nested for-loop
int result = 0;
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
}
Console.WriteLine(result);
Which gives the output of 12. I understand that the result for j is 1 and 2, but just cannot grasp why the final result is 12 instead of 3?
Can someone explain please?
c#
I am currently finding it hard to grasp the output from a simple nested for-loop
int result = 0;
for (int i = 1; i <= 3; i++)
{
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
}
Console.WriteLine(result);
Which gives the output of 12. I understand that the result for j is 1 and 2, but just cannot grasp why the final result is 12 instead of 3?
Can someone explain please?
c#
c#
edited Nov 19 '18 at 6:37
Cœur
17.8k9106145
17.8k9106145
asked Jun 10 '18 at 7:50
NZ_DJNZ_DJ
12010
12010
Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.
– Anthony Pegram
Jun 10 '18 at 7:53
0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..
– ArgusMagnus
Jun 10 '18 at 7:55
add a comment |
Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.
– Anthony Pegram
Jun 10 '18 at 7:53
0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..
– ArgusMagnus
Jun 10 '18 at 7:55
Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.
– Anthony Pegram
Jun 10 '18 at 7:53
Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.
– Anthony Pegram
Jun 10 '18 at 7:53
0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..
– ArgusMagnus
Jun 10 '18 at 7:55
0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..
– ArgusMagnus
Jun 10 '18 at 7:55
add a comment |
3 Answers
3
active
oldest
votes
Your outer loop has three iterations. On each of those three iterations, you're running the inner loop:
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
Given that the body of the loop doesn't depend on j
, and the inner loop will always run twice, we can replace the whole of the inner loop with:
result = result + i;
result = result + i;
Or to simplify it:
result = result + (i * 2);
So now the whole code is equivalent to:
int result = 0;
for (int i = 1; i <= 3; i++)
{
result = result + (i * 2);
}
Console.WriteLine(result);
So after the first iteration of the outer loop, result
is 2 (we've added 2 to 0).
After the second iteration of the outer loop, result
is 6 (we've added 4 to 2).
After the third iteration of the outer loop, result
is 12 (we've added 6 to 6).
Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!
– NZ_DJ
Jun 10 '18 at 7:58
add a comment |
You are adding the value of i
to result
each iteration of the inner loop, and the inner loop runs 3 times (the 3 iterations of the outer loop). Therefore the first time the inner loop runs, you add 1
twice, the second time the inner loop runs you add 2
twice, and the final time it runs you add 3
twice:
result = 1 + 1 + 2 + 2 + 3 + 3 = 12
add a comment |
run that test and you will see:
class Program
{
public static void test()
{
int result = 0;
for (int i = 1; i <= 3; i++)
{
Console.WriteLine("i["+i+"] : ");
for (int j = 1; j <= 2; j++)
{
Console.Write(" when : j["+j+"]");
Console.WriteLine("Adding " + i + "to" + result);
result = result + i;
}
}
Console.WriteLine(result);
Console.ReadLine();
}
static void Main(string args)
{
test();
}
}
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f50781613%2fnested-for-loop-giving-concatenated-result%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
Your outer loop has three iterations. On each of those three iterations, you're running the inner loop:
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
Given that the body of the loop doesn't depend on j
, and the inner loop will always run twice, we can replace the whole of the inner loop with:
result = result + i;
result = result + i;
Or to simplify it:
result = result + (i * 2);
So now the whole code is equivalent to:
int result = 0;
for (int i = 1; i <= 3; i++)
{
result = result + (i * 2);
}
Console.WriteLine(result);
So after the first iteration of the outer loop, result
is 2 (we've added 2 to 0).
After the second iteration of the outer loop, result
is 6 (we've added 4 to 2).
After the third iteration of the outer loop, result
is 12 (we've added 6 to 6).
Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!
– NZ_DJ
Jun 10 '18 at 7:58
add a comment |
Your outer loop has three iterations. On each of those three iterations, you're running the inner loop:
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
Given that the body of the loop doesn't depend on j
, and the inner loop will always run twice, we can replace the whole of the inner loop with:
result = result + i;
result = result + i;
Or to simplify it:
result = result + (i * 2);
So now the whole code is equivalent to:
int result = 0;
for (int i = 1; i <= 3; i++)
{
result = result + (i * 2);
}
Console.WriteLine(result);
So after the first iteration of the outer loop, result
is 2 (we've added 2 to 0).
After the second iteration of the outer loop, result
is 6 (we've added 4 to 2).
After the third iteration of the outer loop, result
is 12 (we've added 6 to 6).
Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!
– NZ_DJ
Jun 10 '18 at 7:58
add a comment |
Your outer loop has three iterations. On each of those three iterations, you're running the inner loop:
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
Given that the body of the loop doesn't depend on j
, and the inner loop will always run twice, we can replace the whole of the inner loop with:
result = result + i;
result = result + i;
Or to simplify it:
result = result + (i * 2);
So now the whole code is equivalent to:
int result = 0;
for (int i = 1; i <= 3; i++)
{
result = result + (i * 2);
}
Console.WriteLine(result);
So after the first iteration of the outer loop, result
is 2 (we've added 2 to 0).
After the second iteration of the outer loop, result
is 6 (we've added 4 to 2).
After the third iteration of the outer loop, result
is 12 (we've added 6 to 6).
Your outer loop has three iterations. On each of those three iterations, you're running the inner loop:
for (int j = 1; j <= 2; j++)
{
result = result +i;
}
Given that the body of the loop doesn't depend on j
, and the inner loop will always run twice, we can replace the whole of the inner loop with:
result = result + i;
result = result + i;
Or to simplify it:
result = result + (i * 2);
So now the whole code is equivalent to:
int result = 0;
for (int i = 1; i <= 3; i++)
{
result = result + (i * 2);
}
Console.WriteLine(result);
So after the first iteration of the outer loop, result
is 2 (we've added 2 to 0).
After the second iteration of the outer loop, result
is 6 (we've added 4 to 2).
After the third iteration of the outer loop, result
is 12 (we've added 6 to 6).
answered Jun 10 '18 at 7:54
Jon SkeetJon Skeet
1083k68279098417
1083k68279098417
Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!
– NZ_DJ
Jun 10 '18 at 7:58
add a comment |
Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!
– NZ_DJ
Jun 10 '18 at 7:58
Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!
– NZ_DJ
Jun 10 '18 at 7:58
Thanks mate, what was I thinking just putting 1 and 2 together duh, Cheers!
– NZ_DJ
Jun 10 '18 at 7:58
add a comment |
You are adding the value of i
to result
each iteration of the inner loop, and the inner loop runs 3 times (the 3 iterations of the outer loop). Therefore the first time the inner loop runs, you add 1
twice, the second time the inner loop runs you add 2
twice, and the final time it runs you add 3
twice:
result = 1 + 1 + 2 + 2 + 3 + 3 = 12
add a comment |
You are adding the value of i
to result
each iteration of the inner loop, and the inner loop runs 3 times (the 3 iterations of the outer loop). Therefore the first time the inner loop runs, you add 1
twice, the second time the inner loop runs you add 2
twice, and the final time it runs you add 3
twice:
result = 1 + 1 + 2 + 2 + 3 + 3 = 12
add a comment |
You are adding the value of i
to result
each iteration of the inner loop, and the inner loop runs 3 times (the 3 iterations of the outer loop). Therefore the first time the inner loop runs, you add 1
twice, the second time the inner loop runs you add 2
twice, and the final time it runs you add 3
twice:
result = 1 + 1 + 2 + 2 + 3 + 3 = 12
You are adding the value of i
to result
each iteration of the inner loop, and the inner loop runs 3 times (the 3 iterations of the outer loop). Therefore the first time the inner loop runs, you add 1
twice, the second time the inner loop runs you add 2
twice, and the final time it runs you add 3
twice:
result = 1 + 1 + 2 + 2 + 3 + 3 = 12
answered Jun 10 '18 at 7:53
IridiumIridium
17.3k34056
17.3k34056
add a comment |
add a comment |
run that test and you will see:
class Program
{
public static void test()
{
int result = 0;
for (int i = 1; i <= 3; i++)
{
Console.WriteLine("i["+i+"] : ");
for (int j = 1; j <= 2; j++)
{
Console.Write(" when : j["+j+"]");
Console.WriteLine("Adding " + i + "to" + result);
result = result + i;
}
}
Console.WriteLine(result);
Console.ReadLine();
}
static void Main(string args)
{
test();
}
}
add a comment |
run that test and you will see:
class Program
{
public static void test()
{
int result = 0;
for (int i = 1; i <= 3; i++)
{
Console.WriteLine("i["+i+"] : ");
for (int j = 1; j <= 2; j++)
{
Console.Write(" when : j["+j+"]");
Console.WriteLine("Adding " + i + "to" + result);
result = result + i;
}
}
Console.WriteLine(result);
Console.ReadLine();
}
static void Main(string args)
{
test();
}
}
add a comment |
run that test and you will see:
class Program
{
public static void test()
{
int result = 0;
for (int i = 1; i <= 3; i++)
{
Console.WriteLine("i["+i+"] : ");
for (int j = 1; j <= 2; j++)
{
Console.Write(" when : j["+j+"]");
Console.WriteLine("Adding " + i + "to" + result);
result = result + i;
}
}
Console.WriteLine(result);
Console.ReadLine();
}
static void Main(string args)
{
test();
}
}
run that test and you will see:
class Program
{
public static void test()
{
int result = 0;
for (int i = 1; i <= 3; i++)
{
Console.WriteLine("i["+i+"] : ");
for (int j = 1; j <= 2; j++)
{
Console.Write(" when : j["+j+"]");
Console.WriteLine("Adding " + i + "to" + result);
result = result + i;
}
}
Console.WriteLine(result);
Console.ReadLine();
}
static void Main(string args)
{
test();
}
}
answered Jun 10 '18 at 8:03
Leon BarkanLeon Barkan
2,04321129
2,04321129
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f50781613%2fnested-for-loop-giving-concatenated-result%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Step through it in your debugger. Follow the logic step by step, line by line, iteration by iteration. Then you'll know.
– Anthony Pegram
Jun 10 '18 at 7:53
0+1+1+2+2+6+6=12. Think about what your loop does and add more outputs in between to show the current value of result..
– ArgusMagnus
Jun 10 '18 at 7:55