Excel地址转换

/*看下面的规则:
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--;
		}
		
	}
}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值