2017-02-22 7 views
-3

私はカナダコンピューティングコンテストの2位を目指していますが、私の解決策は機能しません。最初の数文字(私が信じる最初の3文字)だけを読み込み、ループを終了して、最初の3文字に基づいて適切な出力を提供するように進めます。 はここで過去の論文である:http://cemc.uwaterloo.ca/contests/computing/2015/stage%201/juniorEn.pdfCCC 2015のソリューションですか?

私のコード

Scanner input = new Scanner(System.in); 
    String lines = input.next(); 
    char[] line = lines.toCharArray(); 
    int happy = 0; 
    int sad = 0; 

    int i = 0; 
    while(i < line.length) 
    {   
     if(line[i] == ':' && line[i+1] == '-') 
     { 
      if(line[i+2] == ')') 
       happy++; 
      else if(line[i+2] == '(') 
       sad++; 

      i+=3; 
     } 

     else i++; 

    } 

    if(happy == 0 && sad == 0) 
     System.out.print("none"); 
    else if(happy == sad) 
     System.out.print("unsure"); 
    else if(happy>sad) 
     System.out.print("happy"); 
    else if (sad>happy) 
     System.out.print("sad"); 
+2

'input.next'は行全体を読み上げません。スペースで区切られた単語だけが読み込まれます。あなたは 'input.nextLine'を使いたいかもしれません。 –

+1

それと答えのバグが修正されても、あなたのコードは ': - :-)'のような入力を捕らえることができません。 –

+1

別の文字列の中で ':-) 'のような部分文字列を検索する文字列' indexOf'関数を調べます。オプションで文字列内のインデックスから開始します。 –

答えて

1

を検討することをあなたがしなければ、その後で

while(i < line.length) 

場合i == line.length - 1

line[i+1] 

あなたは長さや配列を超越して取得しますOutOfBoundsException

関連する問題