0

整数を取り込んでインクリメントし、それぞれのアルファベット文字を与える Java メソッドが必要です。このようなもの:

public String getAlpha(Integer number) {
   ...
}

したがって、number等しい値を渡すと、0インクリメントして文字を返す必要がありますa。私がそれを渡すと25、手紙が返されzます。番号を渡すと、26が返されaaます。番号を渡すと、27返されるはずabです。

アルファは、Excel シートの列が表現される方法をほぼシミュレートします。必要なのは、数値を渡してメソッドからアルファ値を取得することだけです。返される文字列が最大chars および最小chargetAlphaでなければならないことを除いて、設定された制限はありません。151

4

3 に答える 3

1

私はこれがあなたが望むことをすると信じていますが、それがより効率的にできるかどうかはわかりません:

static void printCode(int code) {
  final StringBuilder buffer = new StringBuilder();
  do {
    final int digit = (code - 1) % 26;
    buffer.insert(0, (char)(digit + 'a'));
    code = (code - digit - 1) / 26;
  } while (code > 0);
  System.out.println(buffer);
}
于 2012-08-21T12:56:43.590 に答える
0

これは、Javaで0から25までの数値から-zを生成する方法です。

protected static String getLetter(int code) {
    if (code >= 0 && code <= 25)
        return "" + (char) (code  + 'a');
    else
        throw new IllegalArgumentException("char code is out of bound: " + code);
}

残りはただのモジュロ数学です。

于 2012-08-21T12:32:13.370 に答える
0

これは、Excel の列の命名と同じです。

public class Calculator {

    private static String[] letters = new String[]{
        "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
    };

    public static void main(String[] args) {
        System.out.println(calculate(731));
    }

    public static String calculate(int row) {
        return calculateRecursive(row - 1, "");
    }

    private static String calculateRecursive(int row, String res) {
        String val = letters[row % letters.length] + res;
        int i = row / letters.length;
        if(row >= letters.length) {
            return calculateRecursive(i - 1, val);
        }
        return val;

    }
}
于 2017-05-17T09:45:15.473 に答える