Comment compter les caractères de chaque ligne dans une chaîne et convertir le nombre en hexadécimal


J'ai cette chaîne ici appelée message.

Bruce Wayne,Batman,None,Gotham City,Robin,The Joker
Oliver Queen,Green Arrow,None,Star City,Speedy,Deathstroke
Clark Kent,Superman,Flight,Metropolis,None,Lex Luthor
Bart Allen,The Flash,Speed,Central City,Kid Flash,Professor Zoom

Je dois compter le nombre de caractères dans chaque ligne et les imprimer en hexadécimal.

  • La première ligne devrait être (De Bruce à Joker) 2b
  • La deuxième ligne devrait être (D'Oliver à Deathstroke) 32
  • La troisième ligne devrait être (De Clark à Luthor) 2e
  • la quatrième ligne devrait être (De Bart à Zoom) 36
package com.raghav.conversion;

import java.util.ArrayList;
public class StringToHex {
public static void Main(String[] args)   {  
    String message =    "Bruce Wayne,Batman,None,Gotham City,Robin,The Joker" +
                        "Oliver Queen,Green Arrow,None,Star City,Speedy,Deathstroke" +
                        "Clark Kent,Superman,Flight,Metropolis,None,Lex Luthor" + 
                        "Bart Allen,The Flash,Speed,Central City,Kid Flash,Professor Zoom";


    ArrayList<String> lines = new ArrayList<String>();
    ArrayList<Integer> chars = new ArrayList<Integer>();
    ArrayList<String> hex = new ArrayList<String>();

    String line = "";
    int c = 0;

    for(int i = 0; i < message.length(); i++) {
        lines.add(message.charAt(i), line);
        line = line.replaceAll(",", "".replaceAll(" ", ""));
        c = line.length();
        chars.add(c);
        hex.add(Integer.toHexString(c));
    }

    for (int i = 0; i < hex.size(); i++) {
        String padded = "00000000".substring(hex.size()) + hex.get(i);
        System.out.println(padded);
    }
}

}

C'est Ce que j'ai jusqu'à présent mais je reçois un ArrayIndexOutOfBoundsException à la Ligne 22 lines.add(message.charAt(i), line);

Quelqu'un Peut-il m'aider? Grâce.

Author: RealSkeptic, 2015-06-12

2 answers

String msg = "Bruce Wayne,Batman,None,Gotham City,Robin,The Joker\n" +
         "Oliver Queen,Green Arrow,None,Star City,Speedy,Deathstroke\n" +
         "Clark Kent,Superman,Flight,Metropolis,None,Lex Luthor\n" + 
         "Bart Allen,The Flash,Speed,Central City,Kid Flash,Professor Zoom";

String[] lines = msg.split("\n");
for(Integer i = 1; i <= lines.length; i++){
    int numChars = 0;
    String[] toks = lines[i - 1].split(",");
    for(String tok : toks){
        numChars += tok.replaceAll(" ", "").length();
    }
    System.out.println("Line " + i.toString() + " beginning with " + 
            toks[0] + " and ending with " + toks[toks.length - 1] + 
            " contains " + Integer.toHexString(numChars) + 
            " characters." );
}

Cela fera ce que vous cherchez. Notez le \ n à la fin de chaque ligne, ce qui en fait des lignes. Je ne sais pas à quoi servait votre deuxième boucle.

 1
Author: John Kuhns, 2015-06-12 18:52:19

Tourner

String message = "Bruce Wayne,Batman,None,Gotham City,Robin,The Joker" + "Oliver Queen,Green Arrow,None,Star City,Speedy,Deathstroke" + "Clark Kent,Superman,Flight,Metropolis,None,Lex Luthor" + "Bart Allen,The Flash,Speed,Central City,Kid Flash,Professor Zoom";

À

List<String> message = new ArrayList<>(); message.add("Bruce Wayne,Batman,None,Gotham City,Robin,The Joker"); .....

Et

for(int i = 0; i < message.length(); i++) {

À

for(String line : message){

, Puis utilisez line pour le comptage des trucs....

 0
Author: sinclair, 2015-06-12 18:42:16