我创建了一个转换器,它有望转换输入二进制数的任何正常数字,但无论输入什么,它都只会返回数字“1”,为什么?
import java.util.Scanner;
public class NumtoBinary{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("Welcome to the Number to binary converter");
int Num = sc.nextInt();
System.out.println(toBin(2));
}
public static int toBin(int Num){
int result = 0;
while(Num > 0){
int mod = Num % 2;
result = result * 1 + mod;
Num /= 2;
}
return result;
}
}
答案 0 :(得分:1)
你的方法很接近但是对于你需要反映的每个为mod生成零的迭代。您可以使用String来跟踪每次迭代的结果,并将其转换为返回值的整数,如下所示:
public static int toBin(int Num) {
String result = "";
while (Num > 0) {
int mod = Num % 2;
result = mod + result;
Num /= 2;
}
return Integer.parseInt(result);
}
例如上面的方法,如果你输入12,那么每次迭代都会像这样构建字符串" 0"," 00"," 100",&# 34; 1100"