1
votes

Comment faire pour que ma sortie contienne les espaces dont j'ai besoin?

Je dois mettre en majuscule la première lettre de chaque mot passé dans la chaîne. Ma sortie fait cette capitalisation, mais elle ne conserve pas le format de la sortie d'origine. Par exemple, l'entrée de chaîne est "hello world", ma sortie est "HelloWorld" et la sortie souhaitée doit être "Hello World".

J'ai essayé d'ajouter des espaces où je peux tout au long du code mais rien ne fonctionne. Je pense que le problème est que lorsque j'utilise toCharArray, il me donne une sortie sans espaces? Donc, mon résultat de concaténation est d'ajouter tout en un seul coup, par rapport à chaque mot séparément?

Ou je pensais que mon code utilisait la concaténation de chaînes avec mon résultat, et il n'est pas séparé car j'ai les deux mots dans le même variable.

import java.util.*; 
import java.io.*;

    class Main {  
      public static String LetterCapitalize(String str) { 

        // code goes here   
        String[] word = str.split(" ");
        String result = "";


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

            char[] charWord = word[i].toCharArray();

            for(int j = 0; j < charWord.length; j++ ) {
            String cap = word[i].charAt(0) + "";
            cap = cap.toUpperCase();
            //System.out.print(" ");
            result += (j == 0 ? cap : word[i].charAt(j));
        }

        }

        return result;


      } 

      public static void main (String[] args) {  
        // keep this function call here     
        Scanner s = new Scanner(System.in);
        System.out.print(LetterCapitalize(s.nextLine())); 
      }   

   }

Aucune erreur. Ne pas obtenir le résultat souhaité.


1 commentaires

Votre code n'ajoute aucun espace au résultat.


3 Réponses :


1
votes

Quand vous avez fait String [] word = str.split (""); , l'espace entre chaque mot est supprimé et il ne vous reste plus que les mots dans un tableau. Vous devez utiliser String.join ("", mot) sur le tableau de mots résultant pour inverser les effets afin de récupérer les espaces.

Au lieu de parcourir chaque mot char par char, essayez ceci :

for(int i = 0; i < word.length; i++) {
    word[i] = word[i].substring(0, 1).toUpperCase() + word[i].substring(1);
}
result = String.join(" ", word);


0 commentaires

0
votes

Essayez ceci:

import java.util.*;

class Main {  
  public static String LetterCapitalize(String str) { 

    // code goes here   
    String[] word = str.split(" ");
    String result = "";

    for(int i = 0; i < word.length; i++) {
        result += capitalize(word[i]) + (i != word.length - 1 ? " " : "");
    }

    return result;
  }

  private static String capitalize(String s){
      return Character.toUpperCase(s.charAt(0)) + s.substring(1);
  }

  public static void main (String[] args) {  
    // keep this function call here     
    Scanner s = new Scanner(System.in);
    System.out.print(LetterCapitalize(s.nextLine())); 
  }   
}


0 commentaires

0
votes

Vous pouvez utiliser le code ci-dessous.

class Main {
public static String LetterCapitalize(String str) {

    // code goes here
    String[] word = str.split(" ");
    StringBuilder result = new StringBuilder();


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

        char[] charWord = word[i].toCharArray();

        for (int j = 0; j < charWord.length; j++) {
            String cap = word[i].charAt(0) + "";
            cap = cap.toUpperCase();
            //System.out.print(" ");
            result.append(j == 0 ? cap : word[i].charAt(j));
        }
        result.append(" ");
    }

    return result.toString();


}

public static void main(String[] args) {
    // keep this function call here
    Scanner s = new Scanner(System.in);
    System.out.print(LetterCapitalize(s.nextLine()));
}

}


1 commentaires

Bien que cet extrait de code puisse résoudre le problème, il n'explique pas pourquoi ni comment il répond à la question. Veuillez inclure une explication pour votre code , car cela contribue vraiment à améliorer la qualité de votre message. N'oubliez pas que vous répondez à la question aux lecteurs à l'avenir et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code. Vous pouvez utiliser le bouton modifier pour améliorer cette réponse et obtenir plus de votes et de réputation!