patternjavaMajor
Writing nested for loops to produce certain output
Viewed 0 times
producewritingloopsoutputnestedforcertain
Problem
My task:
Write nested
48 characters wide:
This is my idea, but I guess it's pretty much redundant. If so, how can I minimize redundancy here? My output is correct, by the way.
Write nested
for loops to produce the following output with each line48 characters wide:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~+~~+~~+~~+~~+~~+~~+~~+~~+~~+~~+~~+~~+~~+~~+~~+~
+~++~++~++~++~++~++~++~++~++~++~++~++~++~++~++~+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~This is my idea, but I guess it's pretty much redundant. If so, how can I minimize redundancy here? My output is correct, by the way.
public class Exercises {
public static void main (String[] args){
for (int i = 1; i <= 4; i++){
for (int j = 1; j <= 12; j++){
System.out.print("~");
}
}
System.out.println();
System.out.print("~");
for (int i = 1; i <=15; i++){
System.out.print("+~~");
}
System.out.println("+~");
System.out.print("+~");
for (int i = 1; i <= 15; i++){
System.out.print("++~");
}
System.out.println("+");
for (int i = 1; i <= 4; i++){
for (int j = 1; j <= 12; j++){
System.out.print("~");
}
}
}
}Solution
You're not breaking up the patterns in the most logical way. Each line just consists of repeating blocks of three characters.
Alternatively, the inner loop could just count to 16:
Better yet, use a modern enhanced for-loop instead of the old-style counting loop.
public class SquigglePlus {
private static final String[] PATTERNS = { "~~~", "~+~", "+~+", "~~~" };
public static void main(String[] args) {
for (int line = 0; line < PATTERNS.length; line++) {
for (int col = 0; col < 48; col += PATTERNS[line].length()) {
System.out.print(PATTERNS[line]);
}
System.out.println();
}
}
}Alternatively, the inner loop could just count to 16:
for (int i = 0; i < 16; i++) { … }. Note that in Java, that is the most idiomatic way to count: start with 0, and use < for the termination check. The other way (for (int i = 1; i <= 16; i++) { … }) would not be wrong, but usually you would write it that way only if you had a special reason.Better yet, use a modern enhanced for-loop instead of the old-style counting loop.
public class SquigglePlus {
private static final String[] PATTERNS = { "~~~", "~+~", "+~+", "~~~" };
public static void main(String[] args) {
for (String pattern : PATTERNS) {
for (int col = 0; col < 48; col += pattern.length()) {
System.out.print(pattern);
}
System.out.println();
}
}
}Code Snippets
public class SquigglePlus {
private static final String[] PATTERNS = { "~~~", "~+~", "+~+", "~~~" };
public static void main(String[] args) {
for (int line = 0; line < PATTERNS.length; line++) {
for (int col = 0; col < 48; col += PATTERNS[line].length()) {
System.out.print(PATTERNS[line]);
}
System.out.println();
}
}
}public class SquigglePlus {
private static final String[] PATTERNS = { "~~~", "~+~", "+~+", "~~~" };
public static void main(String[] args) {
for (String pattern : PATTERNS) {
for (int col = 0; col < 48; col += pattern.length()) {
System.out.print(pattern);
}
System.out.println();
}
}
}Context
StackExchange Code Review Q#111932, answer score: 41
Revisions (0)
No revisions yet.