Java pattern using for loop, stuck in the last part
Here is my code, I am trying to get a specific pattern but I ended up with an unexpected pattern.
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < i * 2; j++)
{
if (i != 3)
{
System.out.print(" ");
}
else
{
System.out.print("*");
}
}
for(int k = 13; k > i * 2; k--)
{
System.out.print("*");
}
System.out.println();
}
I am getting this:
*************
***********
*********
*************
*****
When I should be getting this:
*************
***********
*********
***********
*************
Anyone can help me with this one? Thanks!
java loops for-loop
add a comment |
Here is my code, I am trying to get a specific pattern but I ended up with an unexpected pattern.
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < i * 2; j++)
{
if (i != 3)
{
System.out.print(" ");
}
else
{
System.out.print("*");
}
}
for(int k = 13; k > i * 2; k--)
{
System.out.print("*");
}
System.out.println();
}
I am getting this:
*************
***********
*********
*************
*****
When I should be getting this:
*************
***********
*********
***********
*************
Anyone can help me with this one? Thanks!
java loops for-loop
1
Have you tried debugging through it to see if it's going through the loops as you expect it to? Once you do that it should be clear to you what should change
– Krease
Nov 20 '18 at 18:07
add a comment |
Here is my code, I am trying to get a specific pattern but I ended up with an unexpected pattern.
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < i * 2; j++)
{
if (i != 3)
{
System.out.print(" ");
}
else
{
System.out.print("*");
}
}
for(int k = 13; k > i * 2; k--)
{
System.out.print("*");
}
System.out.println();
}
I am getting this:
*************
***********
*********
*************
*****
When I should be getting this:
*************
***********
*********
***********
*************
Anyone can help me with this one? Thanks!
java loops for-loop
Here is my code, I am trying to get a specific pattern but I ended up with an unexpected pattern.
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < i * 2; j++)
{
if (i != 3)
{
System.out.print(" ");
}
else
{
System.out.print("*");
}
}
for(int k = 13; k > i * 2; k--)
{
System.out.print("*");
}
System.out.println();
}
I am getting this:
*************
***********
*********
*************
*****
When I should be getting this:
*************
***********
*********
***********
*************
Anyone can help me with this one? Thanks!
java loops for-loop
java loops for-loop
edited Nov 26 '18 at 16:57
jaco0646
5,39152947
5,39152947
asked Nov 20 '18 at 18:04
HugelevinHugelevin
31
31
1
Have you tried debugging through it to see if it's going through the loops as you expect it to? Once you do that it should be clear to you what should change
– Krease
Nov 20 '18 at 18:07
add a comment |
1
Have you tried debugging through it to see if it's going through the loops as you expect it to? Once you do that it should be clear to you what should change
– Krease
Nov 20 '18 at 18:07
1
1
Have you tried debugging through it to see if it's going through the loops as you expect it to? Once you do that it should be clear to you what should change
– Krease
Nov 20 '18 at 18:07
Have you tried debugging through it to see if it's going through the loops as you expect it to? Once you do that it should be clear to you what should change
– Krease
Nov 20 '18 at 18:07
add a comment |
1 Answer
1
active
oldest
votes
The line that you print is a sequence of space '' and asterisks '
*
' characters. Its length is always 13. So the sum of of spaces
and stars
must be 13.
Whenever a line is printed 2 spaces are added to the line and 2 stars are removed, until you reach a point where the reverse operation is happened (the point is 9 stars).
This code prints that pattern.
public class Pattern{
private static final int MAX_LINE_LENGTH = 13;
private static final int MIN_LINE_LENGTH = 9;
private static final int DIFFERENCE = 2;
private static final int LINES = 5;
private static final String SPACE = " ";
private static final String STAR = "*";
public static void main(String args) {
printPattern();
}
private static void printPattern(){
int spaces = 0;
int stars = MAX_LINE_LENGTH;
boolean reverse = false;
for (int i=0; i<LINES; i++) {
printLine(spaces,stars);
if (stars == MIN_LINE_LENGTH) {
reverse = true;
}
if (reverse == false) {
spaces+=DIFFERENCE;
stars-=DIFFERENCE;
}else{
spaces-=DIFFERENCE;
stars+=DIFFERENCE;
}
}
}
private static void printLine(int spaces, int stars){
StringBuilder builder = new StringBuilder();
for (int i=0; i<spaces+stars; i++) {
if (i<spaces) {
builder.append(SPACE);
}else{
builder.append(STAR);
}
}
System.out.println(builder.toString());
}
}
1
Sure that will work, but I wanted to use the least code possible without having to create methods for it. I am a beginner so most of the logic you used is new for me and I don't quite seem to understand everything. I still appreciate your time to help me. Thanks.
– Hugelevin
Nov 21 '18 at 19:17
No problem @Hugelevin. By the way, I've split the code in small methods just to be cleared and more understandable. On the way you will learn to break problems into small ones and eventually write your code somehow like this above, so people will understand it. Never forget that you don't write code just for yourself, you write code to be read by others, just like I did (tried at least). Cheers!
– Themelis
Nov 21 '18 at 19:21
By the way if you have any questions about the above code snippet just ask here in the comment section.
– Themelis
Nov 21 '18 at 19:22
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%2f53398939%2fjava-pattern-using-for-loop-stuck-in-the-last-part%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The line that you print is a sequence of space '' and asterisks '
*
' characters. Its length is always 13. So the sum of of spaces
and stars
must be 13.
Whenever a line is printed 2 spaces are added to the line and 2 stars are removed, until you reach a point where the reverse operation is happened (the point is 9 stars).
This code prints that pattern.
public class Pattern{
private static final int MAX_LINE_LENGTH = 13;
private static final int MIN_LINE_LENGTH = 9;
private static final int DIFFERENCE = 2;
private static final int LINES = 5;
private static final String SPACE = " ";
private static final String STAR = "*";
public static void main(String args) {
printPattern();
}
private static void printPattern(){
int spaces = 0;
int stars = MAX_LINE_LENGTH;
boolean reverse = false;
for (int i=0; i<LINES; i++) {
printLine(spaces,stars);
if (stars == MIN_LINE_LENGTH) {
reverse = true;
}
if (reverse == false) {
spaces+=DIFFERENCE;
stars-=DIFFERENCE;
}else{
spaces-=DIFFERENCE;
stars+=DIFFERENCE;
}
}
}
private static void printLine(int spaces, int stars){
StringBuilder builder = new StringBuilder();
for (int i=0; i<spaces+stars; i++) {
if (i<spaces) {
builder.append(SPACE);
}else{
builder.append(STAR);
}
}
System.out.println(builder.toString());
}
}
1
Sure that will work, but I wanted to use the least code possible without having to create methods for it. I am a beginner so most of the logic you used is new for me and I don't quite seem to understand everything. I still appreciate your time to help me. Thanks.
– Hugelevin
Nov 21 '18 at 19:17
No problem @Hugelevin. By the way, I've split the code in small methods just to be cleared and more understandable. On the way you will learn to break problems into small ones and eventually write your code somehow like this above, so people will understand it. Never forget that you don't write code just for yourself, you write code to be read by others, just like I did (tried at least). Cheers!
– Themelis
Nov 21 '18 at 19:21
By the way if you have any questions about the above code snippet just ask here in the comment section.
– Themelis
Nov 21 '18 at 19:22
add a comment |
The line that you print is a sequence of space '' and asterisks '
*
' characters. Its length is always 13. So the sum of of spaces
and stars
must be 13.
Whenever a line is printed 2 spaces are added to the line and 2 stars are removed, until you reach a point where the reverse operation is happened (the point is 9 stars).
This code prints that pattern.
public class Pattern{
private static final int MAX_LINE_LENGTH = 13;
private static final int MIN_LINE_LENGTH = 9;
private static final int DIFFERENCE = 2;
private static final int LINES = 5;
private static final String SPACE = " ";
private static final String STAR = "*";
public static void main(String args) {
printPattern();
}
private static void printPattern(){
int spaces = 0;
int stars = MAX_LINE_LENGTH;
boolean reverse = false;
for (int i=0; i<LINES; i++) {
printLine(spaces,stars);
if (stars == MIN_LINE_LENGTH) {
reverse = true;
}
if (reverse == false) {
spaces+=DIFFERENCE;
stars-=DIFFERENCE;
}else{
spaces-=DIFFERENCE;
stars+=DIFFERENCE;
}
}
}
private static void printLine(int spaces, int stars){
StringBuilder builder = new StringBuilder();
for (int i=0; i<spaces+stars; i++) {
if (i<spaces) {
builder.append(SPACE);
}else{
builder.append(STAR);
}
}
System.out.println(builder.toString());
}
}
1
Sure that will work, but I wanted to use the least code possible without having to create methods for it. I am a beginner so most of the logic you used is new for me and I don't quite seem to understand everything. I still appreciate your time to help me. Thanks.
– Hugelevin
Nov 21 '18 at 19:17
No problem @Hugelevin. By the way, I've split the code in small methods just to be cleared and more understandable. On the way you will learn to break problems into small ones and eventually write your code somehow like this above, so people will understand it. Never forget that you don't write code just for yourself, you write code to be read by others, just like I did (tried at least). Cheers!
– Themelis
Nov 21 '18 at 19:21
By the way if you have any questions about the above code snippet just ask here in the comment section.
– Themelis
Nov 21 '18 at 19:22
add a comment |
The line that you print is a sequence of space '' and asterisks '
*
' characters. Its length is always 13. So the sum of of spaces
and stars
must be 13.
Whenever a line is printed 2 spaces are added to the line and 2 stars are removed, until you reach a point where the reverse operation is happened (the point is 9 stars).
This code prints that pattern.
public class Pattern{
private static final int MAX_LINE_LENGTH = 13;
private static final int MIN_LINE_LENGTH = 9;
private static final int DIFFERENCE = 2;
private static final int LINES = 5;
private static final String SPACE = " ";
private static final String STAR = "*";
public static void main(String args) {
printPattern();
}
private static void printPattern(){
int spaces = 0;
int stars = MAX_LINE_LENGTH;
boolean reverse = false;
for (int i=0; i<LINES; i++) {
printLine(spaces,stars);
if (stars == MIN_LINE_LENGTH) {
reverse = true;
}
if (reverse == false) {
spaces+=DIFFERENCE;
stars-=DIFFERENCE;
}else{
spaces-=DIFFERENCE;
stars+=DIFFERENCE;
}
}
}
private static void printLine(int spaces, int stars){
StringBuilder builder = new StringBuilder();
for (int i=0; i<spaces+stars; i++) {
if (i<spaces) {
builder.append(SPACE);
}else{
builder.append(STAR);
}
}
System.out.println(builder.toString());
}
}
The line that you print is a sequence of space '' and asterisks '
*
' characters. Its length is always 13. So the sum of of spaces
and stars
must be 13.
Whenever a line is printed 2 spaces are added to the line and 2 stars are removed, until you reach a point where the reverse operation is happened (the point is 9 stars).
This code prints that pattern.
public class Pattern{
private static final int MAX_LINE_LENGTH = 13;
private static final int MIN_LINE_LENGTH = 9;
private static final int DIFFERENCE = 2;
private static final int LINES = 5;
private static final String SPACE = " ";
private static final String STAR = "*";
public static void main(String args) {
printPattern();
}
private static void printPattern(){
int spaces = 0;
int stars = MAX_LINE_LENGTH;
boolean reverse = false;
for (int i=0; i<LINES; i++) {
printLine(spaces,stars);
if (stars == MIN_LINE_LENGTH) {
reverse = true;
}
if (reverse == false) {
spaces+=DIFFERENCE;
stars-=DIFFERENCE;
}else{
spaces-=DIFFERENCE;
stars+=DIFFERENCE;
}
}
}
private static void printLine(int spaces, int stars){
StringBuilder builder = new StringBuilder();
for (int i=0; i<spaces+stars; i++) {
if (i<spaces) {
builder.append(SPACE);
}else{
builder.append(STAR);
}
}
System.out.println(builder.toString());
}
}
edited Nov 21 '18 at 10:08
answered Nov 20 '18 at 20:16
ThemelisThemelis
857518
857518
1
Sure that will work, but I wanted to use the least code possible without having to create methods for it. I am a beginner so most of the logic you used is new for me and I don't quite seem to understand everything. I still appreciate your time to help me. Thanks.
– Hugelevin
Nov 21 '18 at 19:17
No problem @Hugelevin. By the way, I've split the code in small methods just to be cleared and more understandable. On the way you will learn to break problems into small ones and eventually write your code somehow like this above, so people will understand it. Never forget that you don't write code just for yourself, you write code to be read by others, just like I did (tried at least). Cheers!
– Themelis
Nov 21 '18 at 19:21
By the way if you have any questions about the above code snippet just ask here in the comment section.
– Themelis
Nov 21 '18 at 19:22
add a comment |
1
Sure that will work, but I wanted to use the least code possible without having to create methods for it. I am a beginner so most of the logic you used is new for me and I don't quite seem to understand everything. I still appreciate your time to help me. Thanks.
– Hugelevin
Nov 21 '18 at 19:17
No problem @Hugelevin. By the way, I've split the code in small methods just to be cleared and more understandable. On the way you will learn to break problems into small ones and eventually write your code somehow like this above, so people will understand it. Never forget that you don't write code just for yourself, you write code to be read by others, just like I did (tried at least). Cheers!
– Themelis
Nov 21 '18 at 19:21
By the way if you have any questions about the above code snippet just ask here in the comment section.
– Themelis
Nov 21 '18 at 19:22
1
1
Sure that will work, but I wanted to use the least code possible without having to create methods for it. I am a beginner so most of the logic you used is new for me and I don't quite seem to understand everything. I still appreciate your time to help me. Thanks.
– Hugelevin
Nov 21 '18 at 19:17
Sure that will work, but I wanted to use the least code possible without having to create methods for it. I am a beginner so most of the logic you used is new for me and I don't quite seem to understand everything. I still appreciate your time to help me. Thanks.
– Hugelevin
Nov 21 '18 at 19:17
No problem @Hugelevin. By the way, I've split the code in small methods just to be cleared and more understandable. On the way you will learn to break problems into small ones and eventually write your code somehow like this above, so people will understand it. Never forget that you don't write code just for yourself, you write code to be read by others, just like I did (tried at least). Cheers!
– Themelis
Nov 21 '18 at 19:21
No problem @Hugelevin. By the way, I've split the code in small methods just to be cleared and more understandable. On the way you will learn to break problems into small ones and eventually write your code somehow like this above, so people will understand it. Never forget that you don't write code just for yourself, you write code to be read by others, just like I did (tried at least). Cheers!
– Themelis
Nov 21 '18 at 19:21
By the way if you have any questions about the above code snippet just ask here in the comment section.
– Themelis
Nov 21 '18 at 19:22
By the way if you have any questions about the above code snippet just ask here in the comment section.
– Themelis
Nov 21 '18 at 19:22
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%2f53398939%2fjava-pattern-using-for-loop-stuck-in-the-last-part%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
1
Have you tried debugging through it to see if it's going through the loops as you expect it to? Once you do that it should be clear to you what should change
– Krease
Nov 20 '18 at 18:07