[Webinar] Learn how to a build a cloud-first strategyRegister Now

x
Solved

# converts a string binary number to a decimal

Posted on 2002-03-20
Medium Priority
219 Views
import java.io.*;
import java.math.*;

class yk {

static PrintWriter screen = new PrintWriter(System.out, true);

public static void main(String[] args) throws IOException {

String str;
char[] charArray;
String[] subs;
int[] q;
int count = 0;
char separator = ' ';
int index = 0;
index = 0;
int endIndex = 0;
int sum = 0;
int weight = 1;

screen.println("Try System");
screen.println("Enter a sentences");
screen.println();
//str = str.toLowerCase();
char[] array = new char [str.length()];
StringBuffer buf = new StringBuffer();
int dis = 1 << 7;

for ( int i = 0; i < str.length(); i++ ) {

if (str.length() % 2 == 1) {
for (int sh1=1; sh1<=8; sh1++)
buf.append('0');
}

array[i] = str.charAt(i);

for (int sh = 1; sh <= 8; sh++) {

buf.append(( array[i] & dis ) == 0 ? '0' : '1');
array[i] <<= 1;
}

i++;

if (i < str.length()) {
array[i] = str.charAt(i);

for (int sh2 = 1; sh2 <= 8; sh2++) {

buf.append(( array[i] & dis ) == 0 ? '0' : '1');
array[i] <<= 1;
}
}

buf.append(' '); // added for debug
}
String s = buf.toString();
System.out.println(s);

do
{
++count;
++index;
index = s.indexOf( separator, index );
}
while ( index != -1);

String[] subStr = new String[count];
index = 0;

for ( int i = 0; i < count; i++ )
{
endIndex = s.indexOf( separator, index );

if ( endIndex == -1 )
subStr[i] = s.substring ( index );
else
subStr[i] = s.substring( index, endIndex );

index = endIndex + 1;
}

//DISPLAY THE SUBSTRINGS
for ( int i = 0; i < subStr.length; i++ )
System.out.println(subStr[i]);
//System.out.print(" " + Integer.parseInt(subStr[i], 2));
}
}

At the final results, i want to convert each binary string to become a decimal but i getting some error message with this code: System.out.print(" " + Integer.parseInt(subStr[i], 2)); Then each decimal with do some math calculation. For example math.pow(decimal, x) and mod by a value. Can some one help me to solve this probelm!!
0
Question by:dxding

LVL 9

Accepted Solution

Venci75 earned 900 total points
ID: 6882671
You have to change these 2 things:
the for loop should be:
for ( int i = 0; i < str.length();)

the buf.append(' '); line must be within the if (i < str.length()) block
if (i < str.length()) {
array[i] = str.charAt(i);
for (int sh2 = 1; sh2 <= 8; sh2++) {
buf.append(( array[i] & dis ) == 0 ? '0' : '1');
array[i] <<= 1;
}
buf.append(' '); // added for debug
}
0

LVL 16

Expert Comment

ID: 6882736
You just need to change the following:

//DISPLAY THE SUBSTRINGS
for ( int i = 0; i < subStr.length; i++ )
System.out.println(subStr[i]);
//System.out.print(" " + Integer.parseInt(subStr[i], 2));

to

//DISPLAY THE SUBSTRINGS
for ( int i = 0; i < subStr.length; i++ ) {
// add the following two lines
if (subStr[i].equals(""))
break;

System.out.println(subStr[i]);
//System.out.print(" " + Integer.parseInt(subStr[i], 2));
}

And that should work.
0

Author Comment

ID: 6882949
Thanx for help :)
0

## Featured Post

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Java contains several comparison operators (e.g., <, <=, >, >=, ==, !=) that allow you to compare primitive values. However, these operators cannot be used to compare the contents of objects. Interface Comparable is used to allow objects of a cl…
Introduction This article is the last of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers our test design approach and then goes through a simple test case example, how …
Viewers learn about the “for” loop and how it works in Java. By comparing it to the while loop learned before, viewers can make the transition easily. You will learn about the formatting of the for loop as we write a program that prints even numbers…
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.
###### Suggested Courses
Course of the Month20 days, 9 hours left to enroll