Home Formatting comments
Indentation and comments
Comments should be indented to the same level as the thing they are commenting.
Here is an example of bad indentation and commenting:
// A program that prints the number '8' using stars public class Digit8 { public static void main(String[] args) { printLine(); printSides(); printLine(); printSides(); printLine(); } // Prints a horizontal line of 4 stars public static void printLine() { System.out.println("****"); } // Prints two vertical lines that are 2 spaces tall, and are // separated by 2 spaces horizontally public static double printSides() { System.out.println("* *"); System.out.println("* *"); } }
Notice that each of the method comments are too far to the left -- they should all be indented by one level so they line up with the method:
// A program that prints the number '8' using stars public class Digit8 { public static void main(String[] args) { printLine(); printSides(); printLine(); printSides(); printLine(); } // Prints a horizontal line of 4 stars public static void printLine() { System.out.println("****"); } // Prints two vertical lines that are 2 spaces tall, and are // separated by 2 spaces horizontally public static double printSides() { System.out.println("* *"); System.out.println("* *"); } }
Here is a somewhat more complex example, which uses some material from chapters 2-6 in the textbook. Note that each inline comment is placed immediately before the thing that it is commenting, and follows all of our regular indentation rules.
// A program to help me find the area of a triangle. import java.util.*; public class FindTriangleArea { // The main entry point of the program. Prompts the user to // enter the three sides of the triangle, and attempts to // convert it to a triangle if possible. Prints either the // area or an error message to the console. public static void main(String[] args) { Scanner userInput = new Scanner(System.in); double sideA = prompt(userInput, "side A"); double sideB = prompt(userInput, "side B"); double sideC = prompt(userInput, "side C"); if (isTriangle(sideA, sideB, sideC)) { System.out.println(computeArea(sideA, sideB, sideC)); } else { System.out.println("Not a triangle"); } } // Prompts the user for a double using the provided message public static double prompt(Scanner input, String message) { System.out.print(message + " "); return input.nextDouble(); } // Determines if the provided side lengths form a valid triangle. // Returns false if any side length is non-positive, or if the side lengths // fail the triangle inequality theorem. public static boolean isTriangle(double sideA, double sideB, double sideC) { // all sides must be positive if (sideA <= 0 || sideB <= 0 || sideC <= 0) { return false; } double smallest = Math.min(sideA, Math.min(sideB, sideC)); double largest = Math.max(sideA, Math.max(sideB, sideC)); double middle = sideA + sideB + sideC - smallest - largest; // The triangle inequality theorem states that any side of a triangle // is shorter then the sum of the other two sides. if (smallest + middle <= largest) { return false; } } // Finds the area of a triangle given the side lengths. // Assumes the side lengths form a valid triangle (see isTriangle for criteria) public static double computeArea(double sideA, double sideB, double sideC) { // Currently using Heron's formula double s = 0.5 * (sideA + sideB + sideC); double area = Math.sqrt(s * (s - sideA) * (s - sideB) * (s - sideC)); return area; } }