Comp Sci How can I convert a binary string to decimal using Java?

  • Thread starter Thread starter major_maths
  • Start date Start date
  • Tags Tags
    Issues Java
Click For Summary
To convert a binary string to decimal in Java, the program should prompt the user for a binary input and utilize a loop to process each character from the end of the string. Instead of tokenizing the input, the program should evaluate each character as either '0' or '1', calculating its contribution to the decimal value based on its position. For example, the binary string "110101" translates to the decimal number 53 by summing the weighted values of each bit. The current approach using StringTokenizer is not suitable for binary conversion. A more effective method involves iterating through the string and applying the appropriate calculations for each bit.
major_maths
Messages
30
Reaction score
0
I'm trying to make a program that prompts a user to enter a binary number and then converts the string into integers by using Integer.parseInt. Right now though, I'm having trouble with tokenizing the string. My code works when I use the predefined variable temp but not when I enter the same thing into the String variable inputLine.

Code:
import java.util.*;

public class testBitConverter
{
	public static void main(String[] args)
	{
		Scanner keyboard = new Scanner(System.in);
		System.out.println("Please enter a string.");
		String inputLine = keyboard.next(); 
		
                String temp = "1 1 0 0 0 1 1 1";

		StringTokenizer tester = new StringTokenizer(inputLine);
		String first = tester.nextToken();
		String second = tester.nextToken();
		String third = tester.nextToken();
		String fourth = tester.nextToken();
		String fifth = tester.nextToken();
		String sixth = tester.nextToken();
		String seventh = tester.nextToken();
		String eighth = tester.nextToken();
		
		System.out.println("This is the output: ");
		System.out.println("first token: "+first);
		System.out.println("second token: "+second);
		System.out.println("third token: "+third);
		System.out.println("fourth token: "+fourth);
		System.out.println("fifth token: "+fifth);
		System.out.println("sixth token: "+sixth);
		System.out.println("seventh token: "+seventh);
		System.out.println("eighth token: "+eighth);
	}
}
 
Physics news on Phys.org
This doesn't seem like the right approach to me. Your input should be a string that consists of at most 32 0's and 1's. After the string is entered, your program should loop through the string from the back to the front, determining whether the current entry in the string is a '0' or a '1'.

For example, if the entered string is "110101" the resulting decimal number will be the sum of
1 * 20 = 1
0 * 21 = 0
1 * 22 = 4
0 * 23 = 0
1 * 24 = 16
1 * 25 = 32

These add up to 53.
 

Similar threads

  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 12 ·
Replies
12
Views
2K
  • · Replies 18 ·
Replies
18
Views
2K
  • · Replies 37 ·
2
Replies
37
Views
5K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 2 ·
Replies
2
Views
18K
  • · Replies 10 ·
Replies
10
Views
11K
  • · Replies 3 ·
Replies
3
Views
3K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 11 ·
Replies
11
Views
3K