4、蓝桥杯之Excel地址转换
Excel是最常用的办公软件。每个单元格都有唯一的地址表示。比如:第12行第4列表示为:“D12”,第5行第255列表示为“IU5”(26进制)。
事实上,Excel提供了两种地址表示方法,还有一种表示法叫做RC格式地址。
第12行第4列表示为:“R12C4”,第5行第255列表示为“R5C255”。
你的任务是:编写程序,实现从RC地址格式到常规地址格式的转换。
【输入、输出格式要求】
用户先输入一个整数n(n<100),表示接下来有n行输入数据。
接着输入的n行数据是RC格式的Excel单元格地址表示法。
程序则输出n行数据,每行是转换后的常规地址表示法。
例如:用户输入:
2
R12C4
R5C255
则程序应该输出:
D12
IU5
package exe1_5;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Exe4 {
static List<Character> list = new ArrayList<Character>();
public static void main(String[] args) {
init();
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for (int i = 0; i < n; i++) {
String string = scanner.next();
String strspl[] = string.split("\\d+");
if (!(strspl[0].equals("R")&&strspl[1].equals("C"))) {
System.out.println("格式不正确");
return ;
}
change(string);
}
}
private static void init() {
for (int i = 0; i < 26; i++) {
list.add((char)('A'+i));
}
}
private static void change(String string) {
StringBuffer sb = new StringBuffer();
String strspl[] = string.trim().split("[^\\d+| ]",5);
int number = Integer.parseInt(strspl[2]);
int temp = 0;
while (number>=26) {
temp = number/26;
number = number - temp*26;
sb.append(list.get(temp-1));
}
sb.append(list.get(number-1));
sb.append(strspl[1]);
System.out.println(sb);
}
}
打赏一点钱,帮我买杯咖啡,继续创作,谢谢大家!