一个java实用编程问题

/**   
 * @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--;
   
}
    
    
    


}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值