一、 形如Microsoft excel中的列标为A、B、C……Z、AA、AB……ZZ,并假设A列标对应的为excel的第0列;请用最简单快捷的方式实现以下功能:
1、 任意输入1个或2个字母的组合,查找出该单个字母或组合对应的为哪列(例如输入AA,则打印出为第26列)
2、 任意输入1个列数字,查找出该列对应的字母或字母组合,如果越界则打印出“输入列越界,请重新输入”;(例如输入26,则打印出AA)
注意:不可采用定义大数组的方式,即定义所有字母及组合的一个大数组
java面试题目。。急需
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答
- xiaozhuai7 2017-11-16 09:44关注
写了下,代码不好看,但是可以用。
public class test{ public static void main(String[] args){ if(args.length<1){ System.out.println("没有输入"); return; } transform(args[0]); } public static void transform(String str){ try{ int num = Integer.parseInt(str); if(num > 26*26*25){ System.out.println("输入列越界,请重新输入"); return; } String text = ""; int tmp = num / 26; if(tmp>0) text += (char)('A'+tmp-1); tmp = num % 26; text += (char)('A'+tmp); System.out.println(text); }catch(Exception e){ String text = str.toUpperCase(); if(text.length()>2 || text.length()<1){ System.out.println("输入字符串不正确,请重新输入"); return; } char[] chars = text.toCharArray(); int num = 0; if(chars.length==1){ num += chars[0]-'A'; }else{ num += chars[1]-'A'; num += (chars[0]-'A'+1)*26; } System.out.println(num); } } }
解决 无用评论 打赏 举报