Reputation: 15
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
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