Pasar código en C/C++ a Java

cristian09
05 de Noviembre del 2009
Hola, como están, tengo este código en C/C++ y tengo que pasarlo a Java, soy muy nuevo en Java y nose si está bien lo que he hecho, y otra se me complica al implementar el scanf() de C/C++ con alguna operación que lea en Java, y nose si están bien declarados el acceso a los métodos de la clase Codigo, acá dejo los dos códigos

Código en C/C++:
#include <stdio.h>

int Bit() {
char c;
scanf(" %c", &c);
return c-'0';
}

int Len() {
int len;

len = 4*Bit();
len += 2*Bit();
len += Bit();

return len;
}

int Code(int len) {
int val=0, i, pow2=2, base=0;

/* read in the bits */
for (i=0; i<len; i++) {
val = val*2 + Bit();
}
/* val now contains the decimal representation of the bit code */
/* now figure out that code's place int the sequence */
for (i=0; i<len-1; i++) {
base += pow2-1;
pow2 *= 2;
}

/* if val is all 1's ( (2^n)-1 ), end here, return -1 */
if (val == pow2-1) {
return -1;
} else {
return val + base;
}
}


int main() {
char header[300];
int len;
int code;

while (scanf(" "), 1==scanf("%[^n]", header)) {
while (len = Len(), len) {
while (code = Code(len), code != -1) {
putchar(header[code]);
}
}
putchar('n');
}

return 0;
}

Acá está el código sin terminar en Java:

package messagedecoding;
import java.io.IOException;
import java.util.*;

public class Main {
public static void main(String[] args)
{
Codigo code1 = new Codigo();
char header[] = new char[ 300 ] ;
int code;
int len;

while (scanf(" "), 1==scanf("%[^n]", header)){
while (len = code1.Len(), len) {
while (code = code1.Code(len), code != -1) {
System.out.println(header[code]);
}
}
System.out.println('n');
}
}
}


package messagedecoding;
import java.io.*;

public class Codigo {
public int len;
public int val = 0;
public int i;
public int pow2 = 2;
public int base = 0;

public int Bit() throws IOException {
int num;
String str;
char caracter;
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
str = in.readLine();
num=Integer.valueOf(str).intValue();
str=String.valueOf(num);
caracter=str.charAt(i);
return caracter - '0';
}

public int Len() throws IOException {
len = 4*Bit();
len += 2*Bit();
len += Bit();

return len;
}

public int Code(int len) throws IOException {
for(i=0; i<len; i++){
val = val * 2 + Bit();
}
for(i=0; i<len-1; i++){
base += pow2 - 1;
pow2 *= 2;
}
if (val == pow2 - 1){
return -1;
} else {
return val + base;
}
}

}
Muchas gracias!