2017-08-28 9 views
-2

私は1つの競争力のあるウェブサイトから問題を解決していました。そして、私は制約の75%を完了しました。しかし、スペースの後の与えられた文の最初の単語が大文字でなければならないという条件。 たとえば、文章が「This Is」であれば「ThIs Is」に変更する必要があります。 私のコードは次の通りですスペースの後の最初の文字がJavaの大文字になるように、指定された文字列を調整するには?

import java.util.Scanner; 
    public class DancingSentence { 


    public String makeDancing(String sentence) 
    { 
    //sentence=sentence.replace("\\s+",""); 
    //String sen = null; 
    char[] sen = sentence.toCharArray(); 
    int i = 0; 
    System.out.println(sen.length); 

    if(i==0) 
    { 
     sen[i]=sen[i]; 
    } 

    for(i=1;i<sen.length;i++) 
    { 

     // if() 

     if (i%2==0) 
     { 
      sen[i] = (char)(sen[i]-32); 
     } 
     //if((int)sen[i]==32) 
     if(Character.isWhitespace(sen[i])) 
     { 
      //System.out.print(" "); 
      sen[i+1]=Character.toUpperCase(sen[i+1]); 
      //i+=1; 

     } 
    } 

    sentence = sen.toString().copyValueOf(sen); 
    //sentence = sentence.replace("", "\\s+"); 
    //System.out.println(sentence); 
    return sentence; 
    } 
    public static void main(String[] args) { 
    Scanner sc = new Scanner(System.in); 
    String sentence = sc.nextLine(); 
    //sentence=sentence.replaceAll("\\s+",""); 
    DancingSentence ds = new DancingSentence(); 
    String result=ds.makeDancing(sentence); 
    System.out.println(result); 

    } 

    } 
+0

低レベルで作業するのではなく、文字列を単語に分割し、最初の文字を大文字にして、一緒に戻してみましょう。 – vikingsteve

+0

が類似したものを見つけました:https://stackoverflow.com/questions/1086123/string-conversion-to-title-case。 Scottbの答えを –

+4

にしてください。なぜ 'This'は' ThIs'に変換されるべきなのですか? –

答えて

0

あなたのロジックはほぼ正しいです。インデックスが偶数(i % 2 == 0)の場合は、文字を大文字に変換します。空白に遭遇した場合は、スキップして、位置を決定するために使用する変数を増やさないでください。

public String makeDancing(String sentence) { 

    char[] sen = sentence.toCharArray(); 
    int mod = 0; //counts just letters 
    for(int i=0; i < sen.length; i++) { 
     if(Character.isWhitespace(sen[i])) { //if character is a whitespace, skip it 
      continue; 
     } 
     if (mod % 2 == 0) { //if it is an even position, make it uppercase 
      sen[i] = Character.toUpperCase(sen[i]); 
     } 
     mod++; 
    } 
    sentence = new String(sen); 
    return sentence; 
} 
関連する問題