2017-10-06 6 views
0

Il est difficile à expliquer, mais j'essaye de créer un programme qui ne met en majuscule que la lettre de chaque mot qui se termine par une période, un point d'interrogation ou un point d'exclamation. J'ai réussi à recevoir un résultat lors de la saisie de l'une des marques mais seulement quand il est entré la deuxième fois. En d'autres termes, je dois frapper deux fois pour obtenir un résultat et je ne sais pas pourquoi. Je travaille toujours dessus par moi-même mais je suis bloqué par ce problème.Phrase Capitalizer avec une exigence spécifique

import java.util.*; 

public class SentenceCapitalizer 
{ 
    public static void main(String[] args) 
    { 
     Scanner keyboard = new Scanner(System.in); 
     System.out.print("Input a sentence: "); 
     String line = keyboard.nextLine(); 

     String wrong = keyboard.nextLine(); 
     String[] check = {".!?"}; 
     String upper_case_line=""; 
     Scanner lineScan = new Scanner(line); 

     for (String sent : check) 
     { 
      if (sent.startsWith(wrong)) 
      { 
       System.out.println("cant use .?!"); 
      } 
      else 
      { 


      /* if (line.startsWith(" "))//if starts with space 
       System.out.println("good"); 
      else 
       System.out.println("bad"); 
      */ 

      //if (int i = 0; i < line.length; i++) 
      //{char c = line.chartAt(i); 
       while(lineScan.hasNext()) 
       { 
        String word = lineScan.next(); 
        upper_case_line += Character.toUpperCase(word.charAt(0)) + 
          word.substring(1) + " "; 
       } 

       System.out.println(upper_case_line.trim()); 
      } 
     } 

    } 
} 

Répondre

0

Solution

Hey juste une solution rapide pour votre question. Convertit la chaîne en tableau de caractères puis vérifie le tableau de caractères pour '.!?' s'il trouve la valeur alors il fera de la lettre suivante une capitale!

public class SentenceCapitalizer { 

public static void main(String[] args) { 
    //Scanner, Variable to hold ouput 
    Scanner keyboard = new Scanner(System.in); 
    System.out.print("Input a sentence: "); 
    String line = keyboard.nextLine(); 

    //Char array, boolean to check for capital 
    char [] lineChars = line.toCharArray(); 
    boolean needCapital = false; 

    //String to hold output 
    String output = ""; 

    //Check for period in line 
    for (int i = 0; i < lineChars.length; i++) { 

     //Make sure first char is upper case 
     if (i == 0) { 
      lineChars[i] = Character.toUpperCase(lineChars[i]); 
     } 

     //Check for uppercase if char is not space 
     if (needCapital && Character.isLetter(lineChars[i])) { 
      lineChars[i] = Character.toUpperCase(lineChars[i]); 
      needCapital = false; 
     } 

     if (lineChars[i] == '.' || lineChars[i] == '?' || lineChars[i] == '!') { 
      needCapital = true; 
     } 

     //Add character to string 
     output += lineChars[i]; 
    } 

    //Output string 
    System.out.println (output); 
} 
} 
+0

Merci pour votre retour –

+0

@SirNicholas Pas de problème! Heureux de vous aider! – cunniemm