Ankush Kar
Ankush Kar

Reputation: 15

Decimal to Binary conversion using java Errors

I am kind of confused is my program correct or I am missing something!

I could get an output out of it.

public static void main(String args[]) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter you String: ");
    String bin = sc.nextLine();

    int length = bin.length();
    int j = 0;
    int sum = 0;

    if (length != 0) {
        for (int i = length - 1; i >= 0; i--) {
            if (bin.charAt(i) == "0" || bin.charAt(i) == "1") {
                String s = bin.charAt(j) + "";
                sum = (int) (sum + (Integer.valueOf(s)) * (Math.pow(2, i)));
                j++;
            } else {
                System.out.println("illegal input.");
            }
        }
        System.out.println(sum);
    } else {
        System.out.println("illegal input.");

    }
}

Upvotes: 0

Views: 48

Answers (1)

Kaan
Kaan

Reputation: 54

Remove the quotation marks on this line:

if (bin.charAt(i) == "0" || bin.charAt(i) == "1") {

should become

if (bin.charAt(i) == 0 || bin.charAt(i) == 1) {

Below code works fine:

import java.util.Scanner;

public class test {
public static void main (String args []) {
    Scanner sc = new Scanner(System.in);
    System.out.println("Enter you String: ");
    String  bin = sc.nextLine();

    int length = bin.length();
    int j = 0;
    int sum = 0;

    if (length != 0) {
        for (int i = length - 1; i >= 0; i--) {
            if (bin.charAt(i) == '0' || bin.charAt(i) == '1') {
                String s = bin.charAt(j) + "";
                sum = (int) (sum + (Integer.valueOf(s)) * (Math.pow(2, i)));
                j++;
            } else {
                System.out.println("illegal input.");
            }
        }
        System.out.println(sum);
    } else {
        System.out.println("illegal input.");

    }
}
}

Upvotes: 1

Related Questions