直接贴代码:package com.me;public class AlphabelEnum { char []alpha = null;
char []currentValue = null;
public AlphabelEnum(char[] alpha){
this.alpha = alpha;
currentValue = new char[alpha.length]; // 低位在前,高位在后
for(int i = 0; i < alpha.length; i++){
currentValue[i] = 0;// 先以位置相加,然后转换为字母
}
}
/**
* 自身 + 1
*/
public void addOneStep(){
boolean upWards = true;// 进位标志
for(int i = 0; upWards; i++){
currentValue[i]++;
upWards = currentValue[i] == alpha.length;
currentValue[i] = (char)(currentValue[i] % alpha.length);
}
}
/**
* 检查是否到底到达本字母表能表示的最大字符串
* @return 如果还没有到达本字母表能表示的最大字符串,则返回true,否则为false
*/
public boolean isInRange(){
int alphaLen = alpha.length ; // 字母表字符个数
char lastCh = alpha[alphaLen - 1]; // 字母表最后一个字母
boolean isLast = true;
for(int i = 0; i < alphaLen && isLast; i++){
isLast = alpha[currentValue[i]] == lastCh;
}
return !isLast;
}
/**
*
*/
public String toString(){
StringBuilder res = new StringBuilder();
for(int i = currentValue.length; i > 0;){
res.append(alpha[currentValue[--i]]);
}
return res.toString();
}
}
char []currentValue = null;
public AlphabelEnum(char[] alpha){
this.alpha = alpha;
currentValue = new char[alpha.length]; // 低位在前,高位在后
for(int i = 0; i < alpha.length; i++){
currentValue[i] = 0;// 先以位置相加,然后转换为字母
}
}
/**
* 自身 + 1
*/
public void addOneStep(){
boolean upWards = true;// 进位标志
for(int i = 0; upWards; i++){
currentValue[i]++;
upWards = currentValue[i] == alpha.length;
currentValue[i] = (char)(currentValue[i] % alpha.length);
}
}
/**
* 检查是否到底到达本字母表能表示的最大字符串
* @return 如果还没有到达本字母表能表示的最大字符串,则返回true,否则为false
*/
public boolean isInRange(){
int alphaLen = alpha.length ; // 字母表字符个数
char lastCh = alpha[alphaLen - 1]; // 字母表最后一个字母
boolean isLast = true;
for(int i = 0; i < alphaLen && isLast; i++){
isLast = alpha[currentValue[i]] == lastCh;
}
return !isLast;
}
/**
*
*/
public String toString(){
StringBuilder res = new StringBuilder();
for(int i = currentValue.length; i > 0;){
res.append(alpha[currentValue[--i]]);
}
return res.toString();
}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货