2017-01-22 11 views
-5

これを実行して、同じ番号の最長シーケンスを出力するようにしています。私はちょうどそれを編集しましたが、それは私にreturn文を置くよう指示しています。ここに私のコードは次のとおりです。配列リストの中で同じ番号の最長シーケンス

public class A1Q3 { 
    private static int getLongestRun(int[] array){ 
     int count = 1; 
     int max = 1; 

     for (int i = 1; i < array.length; i++) { 
      if (array[i] == array[i - 1]) { 
       count++; 
      } else { 
       count = 1; 
      } 
       if (count > max){ 
        max = count; 
     } 
    } 

    public static void main(String[] args) { 
     int[] array = new int[]{5, 6, 6, 45, -2, -9, 56}; 
     System.out.println(getLongestRun(array)); 
    }  
} 
+4

「私はそれほど自信がありません」 - あなたはそうである必要はありません:単にいくつかの例でそれを実行し、それが機能するかどうかを知る(ヒント:そうではありません)。 – alfasin

+0

以前の番号でない番号が1にリセットされます。最長のカウントを別の変数 'currentMax'と' count ++ 'の後ろに保存する必要があります(count> currentMax)currentMax = count;'最後に 'currentMax'に最大値を設定します –

+1

あなたがこの質問を投稿できるコードレビュースタック交換コミュニティ。 – VHS

答えて

0

あなたはgetLongestRun()関数とreturn文のための閉じ括弧が欠落しています。 max変数を返すとします。また

、代わりの

System.out.println(count); 

試してみてください。

System.out.println(getLongestRun(array)); 

実際にあなたが作った機能を使用します。しかし、あなたの機能はまだ正しくありません。最長のストリーク数ではなく、現在のストリーク数を返しています。ストリークが終了した後、カウントを1に戻しますが、現在のストリークに加えて最大値を格納するには、maxのような別の変数が必要です。

+0

実際には、コードは何も返さないため、コンパイルされません。 – Andreas

+0

また、getLongestRun()関数の閉じ括弧もありません。私はそれを追加します。 –

関連する問題