Below is the syntax highlighted version of Heart.java
from §1.3 Conditionals and Loops.
/****************************************************************************** * Compilation: javac Heart.java * Execution: java Heart n * * Prints out a heart. * * % java Heart 15 * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . * * * * * * * . . . . . . . * * * * * * * . . . . . . . . . . . . * . . . . . . . . . . * * * * * * * * * * * . . . * * * * * * * * * * * . . . . . . . . . . * . . . . . . . . . * * * * * * * * * * * * * . * * * * * * * * * * * * * . . . . . . . . . * . . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . . . * . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . . * . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . * . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . * . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . * . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . * . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . * . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . * . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . * . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . * . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . * . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . * . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . * . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . . * . . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . . . * . . . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . . . . * . . . . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * * * . . . . . . . . . . * . . . . . . . . . . . * * * * * * * * * * * * * * * * * * * * * * * . . . . . . . . . . . * . . . . . . . . . . . . * * * * * * * * * * * * * * * * * * * * * . . . . . . . . . . . . * . . . . . . . . . . . . . * * * * * * * * * * * * * * * * * * * . . . . . . . . . . . . . * . . . . . . . . . . . . . . * * * * * * * * * * * * * * * * * . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . * * * * * * * * * * * * * * * . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . * * * * * * * * * * * * * . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . * * * * * * * * * * * . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . * * * * * * * * * . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . . * * * * * * * . . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . . . * * * * * . . . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . . . . * * * . . . . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . . . . . * . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . * ******************************************************************************/ public class Heart { public static void main(String[] args) { int n = Integer.parseInt(args[0]); for (int i = -3*n/2; i <= n; i++) { for (int j = -3*n/2; j <= 3*n/2; j++) { // inside either diamond or two circles if ((Math.abs(i) + Math.abs(j) < n) || ((-n/2-i) * (-n/2-i) + ( n/2-j) * ( n/2-j) <= n*n/2) || ((-n/2-i) * (-n/2-i) + (-n/2-j) * (-n/2-j) <= n*n/2)) { System.out.print("* "); } else { System.out.print(". "); } } System.out.println(); } } }