Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我想把十进制数转换成二进制数_Java - Fatal编程技术网

Java 我想把十进制数转换成二进制数

Java 我想把十进制数转换成二进制数,java,Java,我有一个错误,它说“需要数组,但找到的时间很长”和“System.out.print(BinaryNumber[j]);”发生这个错误是因为您定义了BinaryNumber的类型“long”,并且希望将其用作数组 我稍微改变一下,试试看: 公共类二进制文件{ 公共静态void main(字符串[]args){ int num=7; int[]二进制数组=cBtD(num); 字符串编号=”; for(int-aBinaryArray:binaryArray) 数字+=aBinaryArray;

我有一个错误,它说“需要数组,但找到的时间很长”和“System.out.print(BinaryNumber[j]);”

发生这个错误是因为您定义了BinaryNumber的类型“long”,并且希望将其用作数组

我稍微改变一下,试试看:

公共类二进制文件{
公共静态void main(字符串[]args){
int num=7;
int[]二进制数组=cBtD(num);
字符串编号=”;
for(int-aBinaryArray:binaryArray)
数字+=aBinaryArray;
System.out.printf(“%d numri decimal=%d binar”,num,Integer.parseInt(数字));
}
私有静态int[]cBtD(int num){
int i=0;
int temp[]=新int[7];
int二进制数[];
while(num>0){
温度[i++]=num%2;
num/=2;
}
binaryNumber=新整数[i];
int k=0;
对于(int j=i-1;j>=0;j--){
二进制数[k++]=temp[j];
}
返回二进制数;
}
}
或者,您可以简单地使用以下方法将十进制转换为二进制:

Integer.tobinarysting();
或者这个:

Integer.toString(n,2);

所有数字本质上都是二进制的。但是,是否以二进制、十六进制或八进制显示它们只是一个表示问题。这意味着您要将它们打印为字符串。即使您执行以下操作:

public class Binar{
public static void main(String[] args){
    int num = 7;
    long Binary = cBtD(num);
System.out.printf("%d numri decimal = %d binar" , num, Binary);
}
public static long cBtD(int num){
    long BinaryNumber = 0;
    int  i = 0;
    long reminder;
    while(num > 0){
        reminder = num % 2;
        num /= 2;
        ++i;
    }
  for (int j = i - 1; j >= 0; j--) {
        System.out.print(BinaryNumber[j]); 
  }
    return BinaryNumber;
}}
因此,要将它们转换为二进制字符串,只需在除以2(通过余数运算符)后将余数前置到字符串


此错误背后的原因是,您已将
BinaryNumber
变量定义为
long
,并且它不是数组。但您正试图像访问数组一样访问它。请在下面检查我的修改答案:

int n = 11;
String s = "";

s = (n%2) + s; // s = "1"
n/=2;  // n == 5
s = (n%2) + s; // s = "11"
n/=2   // n == 2
s = (n%2) + s; // s = "011";
n/=2   // n == 1
s = (n%2) + s; // s = "1011";
n/=2;  // n == 0

n == 0 so your done.

return s and print it.

您应该遵循,例如,
Binary
应该是
Binary
BinaryNumber
应该是
BinaryNumber
。另外,在循环中连接字符串时,最好使用
StringBuilder::append
而不是直接连接
String
。欢迎!如果对你有帮助,请投票支持我。谢谢
int n = 11;
String s = "";

s = (n%2) + s; // s = "1"
n/=2;  // n == 5
s = (n%2) + s; // s = "11"
n/=2   // n == 2
s = (n%2) + s; // s = "011";
n/=2   // n == 1
s = (n%2) + s; // s = "1011";
n/=2;  // n == 0

n == 0 so your done.

return s and print it.
public class Binar {
public static void main(String[] args) {
    int num = 7;
    String Binary = cBtD(num);
    System.out.printf("%d numri decimal = %s binar", num, Binary);
}

public static String cBtD(int num) {
    String BinaryNumber = "";
    long reminder;
    if (num == 0) {
        return "0";
    }
    while (num > 0) {
        reminder = num % 2;
        BinaryNumber = String.valueOf(reminder).concat(BinaryNumber);
        num /= 2;
    }
    return BinaryNumber;
}
}