Excel地址转换 Excel是最常用的办公软件。每个单元格都有唯一的地址表示。 比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”。
2013-04-15 10:54
716 查看
/*Excel地址转换 【编程题】(满分21分) Excel是最常用的办公软件。每个单元格都有唯一的地址表示。 比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”。 事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。 第12行第4列表示为:“R12C4”,第5行第255列表示为“R5C255”。 你的任务是:编写程序,实现从RC地址格式到常规地址格式的转换。 【输入、输出格式要求】 用户先输入一个整数n(n<100),表示接下来有n行输入数据。 接着输入的n行数据是RC格式的Excel单元格地址表示法。 程序则输出n行数据,每行是转换后的常规地址表示法。 例如:用户输入: 2 R12C4 R5C255 则程序应该输出: D12 IU5 */ import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Demo03 { // 计算出字母的个数 public static int checkCount(int n){ int count = 1; while(true){ int t = (int)Math.pow(26, count); if(n > t){ count++; n -= t; }else{ return count; } } } // 添加余数对应的字母 public static char f(int n){ if(n==26){ return 'Z'; }else{ return (char)('A'-1+n%26); } } // 计算结果 public static String fun(int Row,int Col){ StringBuffer sb = new StringBuffer(); int count = checkCount(Col); // 计算出字母的个数 while(count>0){ if(Col%26==0){ //如果能除尽 // 例(702):702/26时(2余0) 应该分配成(1,26) // 个位 加26('Z')时 就等于 十位上的2 去掉(1个26),(一个(个位的26)对应一个(十位的1)) // 修改n的值 2-1; n就等于1; 这时就分配成了(1,26); sb.insert(0,'Z'); // 添加'Z' Col = Col/26 -1; }else{ sb.insert(0,f(Col));// 添加余数r对应的字母 Col /= 26; // 修改 n 的值 } count--; } sb.append(Row); // RC地址后添加(行号) return sb.toString(); } // 输入数据 public static void input(String[] s){ Scanner scan = new Scanner(System.in); int i = 0; while(i<s.length){ // 输入n个数据 s[i++] = scan.nextLine(); } } // 拆分并计算结果 public static void splitOper(String[] s){ Pattern p = Pattern.compile("[0-9]+"); // 以数字做分隔 for(int i=0;i<s.length;i++){ Matcher m = p.matcher(s[i]); // 得到所有数字 m.find(); // 得到第一个数字 int Row = Integer.parseInt(m.group()); // 取出第一个数字 m.find(); // 得到第二个数字 int Col = Integer.parseInt(m.group()); // 取出第二个数字 System.out.println(fun(Row,Col)); // 计算结果并输出 } } // 主函数 public static void main(String[] args){ Scanner scan = new Scanner(System.in); System.out.println("输入一个整数n(n<100)"); String[] s = new String[scan.nextInt()]; input(s); // 输入数据 splitOper(s); // 拆分并计算结果 } }运行结果:
输入一个整数n(n<100) 2 R12C4 R5C255 D12 IU5
相关文章推荐
- Excel是最常用的办公软件。每个单元格都有唯一的地址表示。 比如:第4列表示为:“D”,第255列表示为“IU”。 事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。
- (方法二)Excel是最常用的办公软件。每个单元格都有唯一的地址表示 比如:第4列表示为:“D”,第255列表示为“IU”。 事实上,Excel提供了两种地址表示方法,还有一种表示法叫做R
- 地址格式转换 Excel是最常用的办公软件。每个单元格都有唯一的地址表示。
- MAC 办公常用软件-下载地址与授权码
- 常用软件下载地址
- 我收集整理的常用高效办公软件(不定时更新)
- 一些常用软件的下载地址
- 常用软件下载地址(网络资源无限)
- 常用软件下载地址整理~(数据库,开发工具,资料站点等笔记)
- 常用软件下载地址
- 开发人员系统功能设计常用办公软件分享
- 常用应用软件下载地址
- 微软办公软件Word,Excel,PPT一些常用操作
- [办公应用]如何将excel合并单元格分拆后每个单元格上仍保留数据?
- 开发人员系统功能设计常用办公软件分享
- linux php开发常用软件下载地址
- java开发常用软件及插件官方下载地址
- 常用数学符号的 LaTeX 表示方法 (以下内容主要摘自“一份不太简短的 LATEX2e 介绍”) 1、指数和下标可以用^和_后加相应字符来实现。比如: 2、平方根(square root)
- 常用软件安装地址
- Windows常用软件离线下载地址