/**
* @Package:
* @author: HASEE
* @date: 2018年3月25日 下午11:40:39
*/
/**
* @ClassName: zuoye
* @Description: 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.Scanner;
import java.util.Stack;
public class zuoye {
/**
* @Title: main
* @Description:
* @param args 设定文件
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
String xString=scan.nextLine(); //一点要加不然会出错,作用是在输入n之后,可以输个换行符而不会出错
while(n>0) {
String excel=scan.nextLine();
String split[]=excel.split("C");//以字符C为分隔符将输入的字符串分割成两个字符串数组
split[0] =split[0].substring(1, split[0].length());//取出字符串中字符R到C的子字符串
int hanshu=Integer.parseInt(split[0]);
int lieshu =Integer.parseInt(split[1]);
Stack<Character> stack=new Stack <Character>();//定义一个栈
while(lieshu>0) {
if(lieshu%26==0) { //如果输入的列数是26的倍数的话,自己将Z压入栈顶
stack.push('Z');
lieshu=lieshu/26-1;
}
else {
stack.push((char) ('A'-1+lieshu%26));//同上,余数转换为字符
lieshu=lieshu/26;
}
}
while(!stack.empty()) {
System.out.print(stack.pop());//出栈,先进后出
}
System.out.println(hanshu);//按照Excel的格式最后输出行数
n--;
}
}
}
* @Package:
* @author: HASEE
* @date: 2018年3月25日 下午11:40:39
*/
/**
* @ClassName: zuoye
* @Description: 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.Scanner;
import java.util.Stack;
public class zuoye {
/**
* @Title: main
* @Description:
* @param args 设定文件
* @return void 返回类型
* @throws
*/
public static void main(String[] args) {
// TODO 自动生成的方法存根
Scanner scan=new Scanner(System.in);
int n=scan.nextInt();
String xString=scan.nextLine(); //一点要加不然会出错,作用是在输入n之后,可以输个换行符而不会出错
while(n>0) {
String excel=scan.nextLine();
String split[]=excel.split("C");//以字符C为分隔符将输入的字符串分割成两个字符串数组
split[0] =split[0].substring(1, split[0].length());//取出字符串中字符R到C的子字符串
int hanshu=Integer.parseInt(split[0]);
int lieshu =Integer.parseInt(split[1]);
Stack<Character> stack=new Stack <Character>();//定义一个栈
while(lieshu>0) {
if(lieshu%26==0) { //如果输入的列数是26的倍数的话,自己将Z压入栈顶
stack.push('Z');
lieshu=lieshu/26-1;
}
else {
stack.push((char) ('A'-1+lieshu%26));//同上,余数转换为字符
lieshu=lieshu/26;
}
}
while(!stack.empty()) {
System.out.print(stack.pop());//出栈,先进后出
}
System.out.println(hanshu);//按照Excel的格式最后输出行数
n--;
}
}
}