Excel是最常用的办公软件,每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为:“IU5”。
事实上Excel提供了俩种地址表示方法,还有一种表示法叫做RC格式地址。
如:第12行第4列表示为:“R12C4”,第5行第255列表示为:"R5C255"。任务:实现RC地址格式向常规格式的转换。
例如:用户输入:
2
R12C4
R5C255
则程序输出:
D12
IU5
-----------------------------------------------------------------------------------------------------------
实现代码:
package bulecup;
import java.util.Scanner;
/**
* Excel的地址转换
* @author acer
*
*/
public class AddressChange {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//生成一个自定义长度的的字符串数组
String [] str = new String[sc.nextInt()];
input(str);
change(str);
}
/**
* 获取用户输入的字符串
* @param str
*/
public static void input(String [] str){
Scanner sc = new Scanner(System.in);
for(int i=0 ; i<str.length ; i++){
str[i] = sc.nextLine();
}
}
/**
* 将地址进行转换
* @param str
*/
public static void change(String [] str) {
//遍历用户输入的RC地址
for(int i=0 ; i<str.length ;i++) {
String demo = str[i];
int i1 = demo.indexOf("C");
//得到表格的行数
String temp = demo.substring(1, i1);
//得到表格的列数
String tenp = demo.substring(i1+1);
calculate(Integer.parseInt(temp),Integer.parseInt(tenp));
}
}
/**
* 进行计算
* @param a 行数
* @param b 列数
*/
public static void calculate(int a,int b) {
int column = 'A';
int c = b % 26;
int d = b/26;
if(d > 26) {
calculate(a,d);
}else {
column = column + d - 1;
char ch1 = (char)column;
char ch2 = (char)(c+'A'-1);
if(d == 0) {
System.out.print(ch2);
System.out.println(a);
} else {
System.out.print(ch1);
System.out.print(ch2);
System.out.println(a);
}
}
}
}
如有问题,请提出宝贵建议。