首页 > 编程 > Java > 正文

JAVA蓝桥杯(4)Excel地址转换

2019-11-08 19:24:59
字体:
来源:转载
供稿:网友

问题描述

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.Iterator;import java.util.Scanner;import java.util.Vector;public class Question4 { public static int total = 0; PRivate static Scanner scanner; public static void main(String[] args) { scanner = new Scanner(System.in); int n = Integer.parseInt(scanner.nextLine()); Vector<String> vector = new Vector<String>(); for (int i = 0; i < n; i++) { String string = scanner.nextLine(); vector.add(string); } Iterator<String> iterator = vector.iterator(); while (iterator.hasNext()) { String string = (String) iterator.next(); char[] chars = string.toCharArray(); boolean Rbegin = false; StringBuffer RstringBuffer = new StringBuffer(); StringBuffer CstringBuffer = new StringBuffer(); StringBuffer result = new StringBuffer(); for (int i = 0; i < chars.length; i++) { char c = chars[i]; if (c == 'R') { Rbegin = true; continue; } else if (c == 'C') { Rbegin = false; continue; } if (Rbegin) { RstringBuffer.append(c); } else { CstringBuffer.append(c); } } int c = Integer.parseInt(CstringBuffer.toString()); int r = Integer.parseInt(RstringBuffer.toString()); int num = c / 26; if (num == 0) { result.append((char) ((c % 26) + 64)); } else if (num >= 1) { result.append((char) (num + 64)).append((char) ((c % 26) + 64)); } System.out.print(result.append(r) + "/n"); } }}

运行结果

2R12C4R5C255D12IU5
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表