(Petite histoire) Valeur numérique → méthode de conversion simple de l'alphabet (Java)

TL;DR Vous pouvez facilement le convertir en alphabet en convertissant le nombre en caractère.

Entraine toi

Code spécifique 1

Main.java


public class Main {
    public static void main(String[] args) throws Exception {
        for (int i = 0; i < 26; i++) {
            System.out.print((char) (97 + i) + " ");
        }
    }
}

Code spécifique 2

Main.java


public class Main {
    public static void main(String[] args) throws Exception {
        for (int i = 0; i < 26; i++) {
            //Vous pouvez aussi écrire comme ça**
            System.out.print((char) ('a' + i) + " ");
        }
    }
}

Résultat de sortie

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

application

Cité de ABC171C

Roger a décidé de garder tous les 1000000000000001 chiens qui lui sont soudainement apparus. Les chiens étaient numérotés à l'origine de 1 à 1000000000000001, mais Roger leur a donné des noms selon les règles suivantes: Les chiens numérotés 1,2, ⋯, 26 sont nommés a, b, ..., z dans cet ordre. Les chiens numérotés 27,28,29, ⋯, 701, 702 sont nommés aa, ab, ac, ..., zy, zz dans cet ordre. Les chiens numérotés 703,704,705, ⋯, 18277,18278 sont nommés aaa, aab, aac, ..., zzy, zzz dans cet ordre. Les chiens numérotés 18279,18280,18281, ⋯, 475253,475254 sont nommés aaaa, aaab, aaac, ..., zzzy, zzzz dans cet ordre. Les chiens numérotés 475255,475256, ⋯ sont nommés aaaaa, aaaab, ... dans cet ordre. (Omis ci-dessous)

Main.java


import java.util.Scanner;

public class Main {

    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);

        long n = sc.nextLong(); //Exemple: 18277
        StringBuilder ans = new StringBuilder();

        //En convertissant le reste divisé par 26 en alphabet, la chaîne de caractères est décidée par l'arrière
        while (n != 0) {
            // //Pourquoi n ici--Je ne comprends pas complètement ce que je dois faire, alors j'apprécierais que quelqu'un puisse me le dire. ..
            // 2020/06/22 Addendum
            // n % 26 =À 1 a,... n % 26 =Je veux qu'il soit converti en z à 25,
            //À ce rythme n% 26 =Puisqu'il devient b quand il vaut 1, n--Faire.
            n--;
            // loop1 18276
            // loop2 701
            // loop3 25

            //Convertir des nombres en alphabets en les convertissant en caractères
            ans.append((char) ('a' + n % 26));
            // loop1 18276 % 26 = 24 => y 
            // loop2 701 % 26 = 25 => z 
            // loop3 25 % 26 = 25 => z 

            n /= 26;
            // loop1 702 
            // loop2 26
            // loop3 0 ->Fin
        }

     //Étant donné que les chaînes de caractères ont été créées dans l'ordre inverse, inversez();
        ans = ans.reverse();

        System.out.println(ans); // zzy
        sc.close();
    }
}


Épilogue

J'ai été déçu de ne pas pouvoir résoudre le problème C. Je ferai de mon mieux la prochaine fois.

Recommended Posts

(Petite histoire) Valeur numérique → méthode de conversion simple de l'alphabet (Java)
Avantages de la méthode statique Java
[Java débutant] Conversion d'une chaîne de caractères en valeur numérique - Quelle est la méthode parseInt de la classe Integer? ~
Conversion de valeur numérique (entier) ⇔ chaîne de caractères (chaîne)
[Édition Java] Histoire de la sérialisation
Histoire du passage de Java Gold SE8
[Petite histoire Java] Surveiller lorsqu'une valeur est ajoutée à la liste
Histoire de paiza.jp [solution d'entrée standard Java]
[Connaissance de base de Java] À propos de la conversion de type
L'histoire de l'écriture de Java dans Emacs