public class Tests2020031702 {
	private static String RANGE = "0123456789";
	public static void main(String[] args) {
		// 1-8位随机组合
		for (int len = 1; len <= 5; len++) {
			DashBoard dashBoard = new DashBoard(len);
			// 初始值
			dashBoard.println();
			while (dashBoard.add()) {
				dashBoard.println();
			}
			// 最大值
			dashBoard.println();
		}
	}
	/**
	 * 仪表盘
	 */
	static class DashBoard {
		char[] chars;
		char lastChar = RANGE.charAt(RANGE.length() - 1);
		public DashBoard(int length) {
			// 仪表盘显示位数
			this.chars = new char[length];
			// 初始化
			for (int i = 0; i< chars.length; i++) {
				chars[i] = RANGE.charAt(0);
			}
		}
		/**
		 * 加1
		 * @return	是否成功
		 */
		public boolean add() {
			// 从最后一位开始累加
			for (int i = chars.length - 1; i >= 0; i--) {
				// 加1
				if(RANGE.indexOf(String.valueOf(chars[i])) < (RANGE.length() - 1)) {
					chars[i] = RANGE.charAt(RANGE.indexOf(String.valueOf(chars[i])) + 1);
					// 不溢出则跳出循环
					break;
				}
				chars[i] = RANGE.charAt(0);
			}
			// 判断是否最大值
			for (int i = 0; i< chars.length; i++) {
				if(chars[i] != lastChar) {
					return true;
				}
			}
			return false;
		}
		/**
		 * 打印
		 */
		public void println() {
			for (int i = 0; i< chars.length; i++) {
				System.out.print(chars[i]);
			}
			System.out.println();
		}
	}
}
打印
0 1 2 3 4 5 6 7 8 9 00 01 02 03 04
修改取值范围
private static String RANGE = "abcdefg";
再打印
a b c d e f g aa ab ac ad ae