Initial value of 0 or 1?
Use < or <=?
The wrong choice(s) can cause the number of repetitions of a loop body to be off by 1. Here is an example.
Problem: Select as many items as possible so that the total weight is <= a specified target weight.
Is the loop in the code below correct or is it off by 1?
import java.util.Scanner; public class PackingApp { public static void main(String[] args) { int[] wt = {1, 2, 3, 5, 9, 15, 15, 16, 20}; int targetWeight; Scanner in = new Scanner(System.in); targetWeight = in.nextInt(); int k = 0; // Number of items packed so far int sum = 0; // Total Weight of packed items while( sum <= targetWeight ) { sum += wt[k]; k++; } System.out.printf("target weight = %d, " + "packed weight = %d, " + "number items packed = %d\n", targetWeight, sum, k); } }