JAVA蓝桥杯(4)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

解决方法

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 vector = new Vector();
        for (int i = 0; i < n; i++) {
            String string = scanner.nextLine();
            vector.add(string);
        }
        Iterator 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");
        }
    }
}

运行结果

2
R12C4
R5C255
D12
IU5

你可能感兴趣的:(蓝桥杯练习题,Java笔记)