2017-08-13 14 views
-3

私は、バイナリ文字列中の連続する最大数を見つけようとしています。2進数で最大連続数を見つけるにはどうすればいいですか?

入力:67

予想される出力:2

マイ出力:7

説明:バイナリでの671000011なので、出力は2でなければなりません。しかし、私のように7を取得しています出力。誰かが間違いを指摘できますか?

ここでは、コードです:

public class Test{ 
    static int getMax(int n) 
    { 
     String bin = Integer.toBinaryString(n); 
     char[] arr = bin.toCharArray(); 
     int count = 0; 
     int result = 0; 
     for(int i=0; i < arr.length; i++) 
     { 
      if(arr[i]==0) 
      { 
       count = 0; 
      } 
      else 
      { 
       count++; 
       result=Math.max(result,count); 
      } 
     } 
     return result; 
    } 
    public static void main(String args[]) 
    { 
     System.out.println(getMax(67)); 
    } 
} 
+2

デバッグを行う必要があります。 –

+1

ようこそスタックオーバーフロー!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、より具体的な質問に戻ってください。 –

+3

私はこれをここに置いておきます: '0'と' '0''の違いは何ですか? –

答えて

-1

変更した場合は条件に.. 別に間違った状態から(arr.charAt(I)== '0')の場合

+0

charAt(i)は実際にchar []型に対して正しくありません。 bin.charAt(i)はうまくいくだろう –

+0

ええ、私は彼が何を意味していたと思う。彼は答えに「bin.charAt(i)」に変更しました。 – coder7777

-2

if (arr[i] == 0)があるべきでif (arr[i] == '0'))、毎回のループで最大を計算する必要はありません。

幸運を祈る!

関連する問題