CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

CapitalizeWord in Java probleme ^^

Eleck4
Eleck4
Niveau 9
24 octobre 2015 à 21:27:34

Salut a tous, bon je débute un peu en Java, la je viens de terminer mon code qui consiste a mettre une phrase en majuscule, je ne penses pas avoir fait d’erreur, mais lorsque je lance le programme et que j'entre le message a mettre en majuscule ça ne fonctionne, et j'ai essayer de voir ou l'erreur se trouve mais pas moyen. Je vous laisse le code peut être que vous aller voir ou es mon erreur, merci d'avance ^^

package midterm;

import jpb.SimpleIO;

public class Exercise2 {
public Exercise2() {
super();
}
public static void main(String[] args) {
SimpleIO.prompt("Please Enter the original message: ");
String userInput = SimpleIO.readLine();
Exercise2 exo = new Exercise2();
String finalMes = exo.capitalwords(userInput);
System.out.println(finalMes);

}
public String capitalwords(String userInput){
String retMes="";
userInput = userInput.trim();
int startPos = 0;
int curPos = 0;
int lastPos= userInput.lastIndexOf(" ");
String curwords = " ";
while (startPos != lastPos){
curPos = userInput.indexOf(" ");
curwords = userInput.substring(startPos, curPos);
curwords = curwords.substring(0,1).toUpperCase()+ curwords.substring(1, curwords.length());
retMes = retMes + " " + curwords;
startPos = curPos + 1;

}
if(startPos == lastPos + 1){
curwords = userInput.substring(startPos, userInput.length());
curwords = curwords.substring(0,1).toUpperCase()+ curwords.substring(1, curwords.length());
retMes = retMes + " " + curwords;

}
retMes = retMes.trim();
return retMes;
}
}

Bunyan
Bunyan
Niveau 17
24 octobre 2015 à 23:55:40

Pourquoi ne fais-tu pas un "toUpperCase()" sur tout le message directement au lieu de découper caractère par caractère ?
D'ailleurs, es-tu sûr de pouvoir utiliser cette méthode ? Si oui, l'intérêt de cet exercice est très limité en Java ^^'

Hormis ça, "ça marche pas" n'est pas, n'a jamais été et ne sera jamais une description de problème acceptable. Merci d'indiquer ce qu'il se passe.

TintinMage
TintinMage
Niveau 10
25 octobre 2015 à 01:13:59
curwords = userInput.substring(startPos, curPos);

:d) startPos > curPos = StringIndexOutOfBoundsException

Pourquoi ne pas couper l'input en array de mots, capitalize chaque mot enfin remettre les espaces ?

Pseudo supprimé
Pseudo supprimé 25 octobre 2015 à 09:12:36

J'ai un peu la flemme de regarder tes méthodes (un lien pastebin est quand même apprécié pour ce genre de cas), mais sache qu'il existe des fonctions qui font ce que tu sembles vouloir faire.

Jette un oeil à WordUtils.capitalize(str), dans la librairie apache commons.
A voir si c'est un exercice à but didactique, auquel cas il faudra bien recoder cette méthode par tes propres moyens.

Sinon on ne fais JAMAIS des boucles comme ça sur les string, comme tu as fais sur retMes.
String toto = "";
while(...) {
toto += "ee" + ''eee";
}

Passe par un StringBuilder à la place et fais sb.append(...);
Ensuite quand tu as besoin d'utiliser le résultat : sb.toString();

Message édité le 25 octobre 2015 à 09:17:03 par Pseudo supprimé
Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment