/*看下面的规则:
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
则程序应该输出:
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
*/
---------------------------------------------------------------code1---------------------------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class demo1 {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Input a number(row and col <676):");
int n=Integer.parseInt(br.readLine());
String[] str=new String[100];
for(int i=0;i<n;i++)
{
str[i]=br.readLine();
}
String[] first=new String[100];//取出第一个数字
for(int i=0;i<n;i++)
{
first[i]=((str[i].split("R"))[1].split("C"))[0];
}
String[] end=new String[100];//取出第二个数字
for(int i=0;i<n;i++)
{
end[i]=((str[i].split("R"))[1].split("C"))[1];
}
String[] zimu=new String[26];//26个字母
for(int i=0;i<26;i++)
{
zimu[i]=String.valueOf((char)(('A')+i));
}
String result[]=new String[100];//最终输出的
int b=0;
int a=0;
for(int i=0;i<n;i++)
{
a=Integer.parseInt(end[i])/26;
if(a==0){
b=Integer.parseInt(end[i])%26-1;
result[i]=zimu[b]+first[i];//拼接
}else
{
b=Integer.parseInt(end[i])%26-1;
result[i]=zimu[a-1]+zimu[b]+first[i];//拼接
}
}
for(int i=0;i<n;i++)
{
System.out.println(result[i]);
}
}
}
------------------------------------------------------------------------code2-----------------------------------------------------------------------
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Scanner;
import java.util.Stack;
//在java中,next()方法是不接收空格的,在接收到有效数据前,所有的空格或者tab键等输入被忽略,若有有效数据,则遇到这些键退出。
//nextLine()可以接收空格或者tab键,其输入应该以enter键结束。
//用栈编程
public class AL4_1 {
public static void main(String[] args) throws Exception {
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
System.out.println("input a num:");
int n=br.read();
br.readLine(); //必须加上的,不然会导致输入不准确!
System.out.println("input the zifuchuang:");
while(n>0)
{
String[] str=br.readLine().split("C");
String firstnum=str[0].split("R")[1];
int endnum=Integer.parseInt(str[1]);
Stack<Character> stack=new Stack<Character>();
while(endnum>0)
{
if(endnum%26==0)
{
stack.push('Z');
endnum=endnum%26-1;
}else
{
char c=(char)('A'+endnum%26-1);
stack.push(c);
endnum=endnum/26;
}
}
while(!stack.isEmpty())
{
System.out.print(stack.pop());
}
System.out.print(firstnum);
System.out.println();
System.out.println("-----------------------");
n--;
}
}
}