2011-01-20 8 views
0
import java.io.*; 

public class MyName 
{ 
    public static void main (String [] xxx) throws IOException 
    { 
     String a; 

     BufferedReader read = new BufferedReader (new InputStreamReader (System.in)); 

     System.out.print("Input A Name : "); 
        a = read.readLine(); 
     System.out.print("\n"); 
     System.out.println("Your Name : " +a); 
     System.out.println("Name Capacity: " +a.capacity()); 
     System.out.println("Length Of A Name : "+a.length()); 

     /*After the first word of the name (if the name is more than one word) 
        then the first letter of each word must in uppercase*/ 
     System.out.println((a)+" change to = ".....); //i have no idea what code to wite 
    } 
} 

Entrée: daniel jour lewisComment combiner InputStreamReader avec StringBuffer?

Sortie prévue:

daniel jour lewis = ... -> capacité de chaîne d'entrée

daniel jour lewis = ... -> longueur d'entrée chaîne

"daniel jour lewis" changé "Daniel Day Lewis"


+1

Quelle est exactement votre question? Comment capitaliser les mots dans une chaîne? Lire les lignes suivantes du message? –

+0

aidez-moi s'il vous plaît .. ?? – fortysant

+1

@fortysant, votre titre ne correspond apparemment pas à la question qui est quelque peu cachée dans le code. Veuillez le modifier à nouveau, changer le titre et ajouter quelques mots pour décrire ce dont vous avez vraiment besoin. Un exemple de chaînes pour l'entrée et la sortie attendue serait utile aussi! –

Répondre

2

Si vous utilisez Apache Commons/Lang, vous pouvez le faire:

String capitalized = WordUtils.capitalize(orig); 

Et si vous voulez appliquer Case Titre (par exemple pas d'autres lettres majuscules, sauf les initiales), vous pouvez le faire (grâce @manoj):

String capitalized = WordUtils.capitalizeFully(orig); 
// almost equivalent to WordUtils.capitalize(orig.toLowerCase()); 

Référence:

+0

Je pense que CapitalizeFully() est mieux vaut éviter les fautes de frappe et les majuscules accidentelles au milieu des mots. – Manoj

+0

@Manoj merci pour l'indice, ne savait pas que l'un –

1

Quelle est votre question? Je n'ai pas compris!

Une idée de vous interroger le titre est le suivant:

StringBuffer sb = new StringBuffer(); 
BufferedReader br = new BufferedReader (new InputStreamReader (System.in)); 
String s; 
while(s=br.readLine() != null) { 
    sb.append(s); 
} 

Mais je ne comprends pas les problèmes que vous. Salutations.

2

Si vous ne voulez pas réinventer la roue (ce qui est toujours un bon coup), vous devriez utiliser la suggestion de Sean Patrick Floyd pour Apache Commons.


Si vous voulez utiliser Java juste noyau, vous pourriez être intéressé par java.text.BreakIterator pour faire votre propre fonction toTitleCase. Par exemple, "Zach L" serait interprété par BreakIterator comme ["Zach", "", "L"] (parenthèses utilisées uniquement pour l'accentuation).

Dans notre fonction personnalisée toTitleCase, qui prend une chaîne appelée string comme paramètre, on boucle pourrait sur chaque « mot » à l'aide d'un BreakIterator, mis en place quelque chose comme ceci:

BreakIterator words = BreakIterator.getWordInstance(); 
string = string.toLowerCase(); 
words.setText(string); 
int start = words.first(); 
for (int end = words.next(); end != BreakIterator.DONE; 
    start = end, end = words.next()) 
{ 

Nous fixons notre paramètre, chaîne, en minuscule juste pour la facilité plus tard. Il ne devrait pas être trop difficile d'ici pour obtenir les sous-mots en sous-chaîne entre start et end, titrez les mots, et les concaténer ou les ajouter à la chaîne que nous retournons. (Comme un petit indice supplémentaire, vous pouvez trouver utile d'utiliser Character.toUpper sur le personnage à start).

Encore une fois, cependant, c'est probablement de beaucoup préférable d'utiliser la suggestion de Sean Patrick Floyd. Ceci est juste offert comme une alternative.


Pour référence ultérieure, il est préférable de mettre votre problème dans le texte de la question, plutôt que comme des commentaires dans votre code. Sinon, beaucoup de nos premières réactions pourraient être que vous ne posez pas une vraie question.

+0

merci pour le code et merci pour le conseil ... je suis un débutant dans le code Java ... et je suis de l'Indonésie, donc je suis désolé si mon anglais pas bien .... – fortysant

+0

+1 pour la solution BreakIterator. N'a pas encore utilisé cette classe! –

+0

@fortysant: Nous devons tous commencer en tant que débutants (je suis encore à peu près un débutant moi-même) à un moment donné. Bonne chance avec Java! –