2017-08-28 15 views
-9

私のコードの問題は何ですか? 入力の任意の値に対して1を出力します。JAVAの2進数から10進数への変換?

package Assign; 
import java.util.Scanner; 
import java.lang.*; 

public class Assignment { 

public static void main(String[] args) { 
    Scanner s = new Scanner(System.in); 
    int num = s.nextInt(); 
    int x = 1; 
    int sum = 1, i = 0; 

    while (num > 0) { 
     x = num % 10; 
     if (x == 1) { 
      sum = sum + (2 * i); 
     } 
     num = num/10; 
     i++; 
    } 
    System.out.println(sum); 
} 
} 
+0

をチェックアウトするJavaの10進数変換器にバイナリについて1.

である、あなたは行っていないことを正確に何を見たのセンス? – csmckelvey

+0

'x'を見てください。操作の値を保存しますが、その操作の値は保存しないでください。そこから始めよう。 – Frecklefoot

答えて

0

2つの問題は:

1)あなたは、私が、合計する^ 2を追加する必要はありません2私は

2)合計は常になりの答えを意味し、1ではなく0の時に始まり* 1以上の必要があります。

0

あなたはアルゴリズムを自分で開発する必要がない場合は、ここでそれを行うには短い方法です:

System.out.println(new BigInteger(String.valueOf(num), 2)); 
+0

あなたのコードにもっと多くのコンテキスト/説明を含める必要があります - [回答]を参照してください。 – EJoshuaS

0

これを実行するための簡単な方法。プログラムで

System.out.println(Integer.parseInt(binaryString,2)); 
+0

あなたはより多くの文脈/説明を含めるべきです - [回答]を見てください。 – EJoshuaS

+0

良いJavaプログラマは簡単に理解できます。 –

0

(NUM> 0)は、IFブロック内にある場合、可変和が変更なっている場合のみ。 I = 0可変のでブロック

if (x == 1) { 
    sum = sum + (2 * i); 
} 

場合を考えます。

sum = sum + (2 * i); 

場合(NUM < = 0 = 1可変和は、出力が、他の可能性を考慮すると常に1

あるので

sum = sum + (2 * 0); 
sum = sum + 0; 
sum = sum; 

に評価) whileループはスキップされます。合計= 1、出力はこのコードをデバッグするとき

http://www.java2novice.com/java-interview-programs/binary-to-decimal/

関連する問題