题目要求:
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
【注意】
请仔细调试!您的程序只有能运行出正确结果的时候才有机会得分!
在评卷时使用的输入数据与试卷中给出的实例数据可能是不同的。
输入代码:
/*
* Excel地址转换
*/
import java.util.Scanner;
import java.util.Stack;
public class Main
{
public static void main(String[] args)
{
Scanner in=new Scanner(System.in);
int i,n;
n=in.nextInt();
i=0;
in.nextLine();//必须在连续输入字符串前加上这个,不然会出现错误
while(i<n)
{
String str=in.nextLine();
String []ss=str.split("C");//以C为分割符转换字符串为字符数组
ss[0]=ss[0].substring(1,ss[0].length());//第一位为字母R,所以截取1位以后的字符做数字
int HS=Integer.parseInt(ss[0]);//分割出行数和列数
int LS=Integer.parseInt(ss[1]);
/*
* 对列数进行变换
*/
java.util.Stack stack=new java.util.Stack();//建立栈类
while(LS>0)
{
if(LS%26==0)//如果刚好整除26,则在该栈栈顶添加元素Z
{
stack.push('Z');
LS=LS/26-1;
}
else
{
stack.push((char)('A'-1+LS%26));
LS=LS/26;
}
}
while(!stack.empty())//当该栈不为空时
{
System.out.print(stack.pop());//返回并删除该栈栈顶的元素,这里则是输出栈顶元素
}
System.out.println(HS);
i++;
}
}
}
总结:
有函数真是方便多了,不用自己思考写函数,节省很多时间