Introduction
Imagine that you are a teacher, and need to come up with some adding lessons for your class. The students should add three numbers together between 1 and 9, because adding with 0 is too easy. The result should be less than 10, so that the students don't have to carry the one.
Program
public class Adding { public static void main(String[] args) { List<String> list = new ArrayList<String>(); int count = 0; for (int i = 1; i < 10; i++) { for (int j = 1; j < 10; j++) { for (int k = 1; k < 10; k++) { int sum = i + j + k; if (sum <= 10 ) { String s = i + " + " + j + " + " + k + " = " + sum; list.add(s); count++; } } } } System.out.println(count); Collections.shuffle(list, new Random()); for (String t : list ) { System.out.println(t); } } }
Output
120 3 + 6 + 1 = 10 2 + 2 + 1 = 5 3 + 5 + 2 = 10 7 + 2 + 1 = 10 2 + 4 + 4 = 10 1 + 1 + 5 = 7 3 + 3 + 4 = 10 4 + 1 + 3 = 8 2 + 2 + 3 = 7 3 + 1 + 2 = 6 ...
Discussion
The program first calculates all legal combinations. Each combination is then put into a list, then the combinations are shuffled, so that they are in random order, and finally printed.
The teacher could create three random numbers between 1 and 9
number1 = (int) (Math.random() * 9 + 1); number2 = (int) (Math.random() * 9 + 1); number3 = (int) (Math.random() * 9 + 1);
and then repeat the process until the sum is between 1 and 10, but the algorithm would be harder to understand, it would be a lot slower, and it would probably not create all combinations.
Conclusion
The idea of putting the combinations into a list, and then shuffle the list, results in a program that take up a little memory, but the resulting code is easy to understand and easy to modify.
0 comments:
Post a Comment