获取下个字母

qq_33283446 2018-11-14 04:39:29
传一个字母的字符串,获取下个字母,传Z时返回AA,传AZ返回BA,以此类推的一个方法
...全文
239 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qybao 2018-11-15
  • 打赏
  • 举报
回复
是没有0的26进制,先是[1-26],然后进位到[1][1],直到[1][26]后再进位[2][1] 上面代码最高位应该判断up大于0才执行
nayi_224 2018-11-15
  • 打赏
  • 举报
回复
咋一看就是个26进制的题,但是Z+1应该是BA。AZ+1如果是BA,那你的A到底是表示的0还是1? 没看懂你的进位规则。
qybao 2018-11-15
  • 打赏
  • 举报
回复

public static String getNextColumn(String current) {
		String result = "";
		if (! current.toUpperCase().matches("[A-Z]+")) {return result;}
		char[] c = current.toUpperCase().toCharArray();
		c[c.length-1] += 1;
		int up = 0;
		for (int i=c.length-1; i>=0;i--) {
			c[i] += up;
			up = (c[i] - 'A') / 26;
			result = (char)(up == 0 ? c[i] : c[i]-26*up) + result;
		}
		result = (char)(up == 0 ? 'A' : 'A'+up-1) + result; //漏了最高位了
		return result;
	}
调用 System.out,println(getNextColumn("ZZ"));
qybao 2018-11-15
  • 打赏
  • 举报
回复
由于小写字母自动转成大写字符,所以 char[] c = current.toCharArray(); //获取每位的字符 改成 char[] c = current.toUpperCase().toCharArray(); //获取每位的字符
qybao 2018-11-15
  • 打赏
  • 举报
回复

        //模拟26进制,末位+1,然后判断进位
	public static String getNextColumn(String current) {
		String result = "";
		if (! current.toUpperCase().matches("[A-Z]+")) {return result;} //入力内容限制A-Z
		char[] c = current.toCharArray(); //获取每位的字符
		c[c.length-1] += 1; //末位+1
		int up = 0; //进位标志
		for (int i=c.length-1; i>=0;i--) {
			c[i] += up; //当前位置字符+进位
			up = (c[i] - 'A') / 26; //当前位置字符如果超26则进位
			result = (char)(up == 0 ? c[i] : c[i]-26*up) + result; //如无进位则取当前字符,有进位则减去发生进位的部分
		}
		return result;
	}
调用 System.out,println(getNextColumn("AZ"));
qq_33283446 2018-11-15
  • 打赏
  • 举报
回复
需求逻辑上说Z+1应该是BA合理点,A表示的应该是0
刘大神仙 2018-11-14
  • 打赏
  • 举报
回复
将字母转成assic码,就可以了
_jant 2018-11-14
  • 打赏
  • 举报
回复
  private static String getNextUpEn(String en){
if(en==null || en.equals("") || en.equals("Z"))
return "A";
char lastE = 'Z';
int lastEnglish = (int)lastE;
char[] c = en.toCharArray();
if(c.length>1){
return null;
}else{
int now = (int)c[0];
if(now >= lastEnglish)
return null;
char uppercase = (char)(now+1);
return String.valueOf(uppercase);
}
}
  • 打赏
  • 举报
回复
public class Test {
public static void main(String[] args) {
nextString(new String("ABCDEFGHIJKLMNOPQRSTUVWXYZ"), "BZ");
}

public static String nextString(String charList,String inchar){
charList = charList.toUpperCase();
inchar = inchar.toUpperCase();
StringBuilder outchar = new StringBuilder();
for(String index : inchar.split("")){
outchar.append(charList.charAt((charList.indexOf(index) + 1)%charList.length()));
}
return outchar.toString();
}
}
  • 打赏
  • 举报
回复
引用 2 楼 qq_33283446 的回复:
写一个java方法,参数传一个字母的字符串,获取下一个字母,传的A,则返回B,传的Z返回AA,传的AZ返回BA
只有大写?
qq_33283446 2018-11-14
  • 打赏
  • 举报
回复
写一个java方法,参数传一个字母的字符串,获取下一个字母,传的A,则返回B,传的Z返回AA,传的AZ返回BA
G.Jagger 2018-11-14
  • 打赏
  • 举报
回复
没看明白,再仔细描述一下吧

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧