软件大赛excel转换

package com.lanqiaobei.dati_01;

import java.util.Scanner;
/*
 * 
  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
 * 
 * */
public class ChangeExcel {

	/**
	 * @param args
	 * @author wildcat
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner sc=new Scanner(System.in);		//从 命令行读取
		int num=sc.nextInt();
		String next="";							//用来储存读入的下一个字符串
		String result="";
		for (int i=0;i<num;i++){
			next=sc.next();				//获得下一个字符串
			
			//获得行号
			int index=next.indexOf("C");		      //获得C所在的下标
			
			String row=next.substring(1, index);				//获得行和列的内容
			String col=next.substring(index+1, next.length());
			String cols=changeTo(Integer.parseInt(col));		//把行转化为26进制
			
			result+=cols+row+"\n";				//吧结果加到result中
			
		}
		System.out.println(result);
		
	}
	/*把一个整数转换为26进制,对应关系如下。。
	 * 0,1,2,3,4,5,
	 * A, B, C, D,E , F
	 * 
	 * 
	 * */
	public static String changeTo(int col){    	
		String num26="";
		int pow=0;
		while(col>0){
			int yu=col%26;
			if (yu==0) yu=26;
		
			num26=String.valueOf((char)(yu+64))+num26;   
			col=(col-yu)/26;
		}
		return (num26);
		
	}
	
	
	
	

}

你可能感兴趣的:(软件大赛excel转换)