Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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 我在这里找不到这个逻辑中的错误,它让我发疯 int number=0; int-factorOfTwo=0; 做{ System.out.println(“输入要转换的数字(0-255):”; number=input.nextInt(); }而(数量255); System.out.println(“转换为二进制的数字“+number+”为:”); 对于(factoroftou=1;factoroftou=1){ 系统输出打印(“1”); 数字-=系数2; } else System.out.print(“0”); }_Java_Logic - Fatal编程技术网

Java 我在这里找不到这个逻辑中的错误,它让我发疯 int number=0; int-factorOfTwo=0; 做{ System.out.println(“输入要转换的数字(0-255):”; number=input.nextInt(); }而(数量255); System.out.println(“转换为二进制的数字“+number+”为:”); 对于(factoroftou=1;factoroftou=1){ 系统输出打印(“1”); 数字-=系数2; } else System.out.print(“0”); }

Java 我在这里找不到这个逻辑中的错误,它让我发疯 int number=0; int-factorOfTwo=0; 做{ System.out.println(“输入要转换的数字(0-255):”; number=input.nextInt(); }而(数量255); System.out.println(“转换为二进制的数字“+number+”为:”); 对于(factoroftou=1;factoroftou=1){ 系统输出打印(“1”); 数字-=系数2; } else System.out.print(“0”); },java,logic,Java,Logic,我试图将整数转换成二进制,但我认为逻辑是错误的。例如,128应该以二进制显示为1000 0000,但我得到11111110。我把事情搞砸了吗?你这么接近解决方案,你会自责的 问题是:您正在从左到右打印二进制数字,这表明它们是按最高有效位顺序排列的(MSB为“128、64、32、16、8、4、2、1”) 但是,您的循环正在向后生成列表。从1开始,一直到128 实际上,您希望从128开始,然后返回到1,每一步除以2 int number = 0; int factorOfTwo =

我试图将整数转换成二进制,但我认为逻辑是错误的。例如,128应该以二进制显示为1000 0000,但我得到11111110。我把事情搞砸了吗?

你这么接近解决方案,你会自责的

问题是:您正在从左到右打印二进制数字,这表明它们是按最高有效位顺序排列的(MSB为“128、64、32、16、8、4、2、1”)

但是,您的循环正在向后生成列表。从1开始,一直到128

实际上,您希望从128开始,然后返回到1,每一步除以2

    int number = 0;
    int factorOfTwo = 0;

    do {
        System.out.println("Enter the number to convert (0-255): ");
        number = input.nextInt();
    }  while (number< 0 || number > 255);

       System.out.println("The number " + number + " converted to binary is : ");

    for (factorOfTwo = 1; factorOfTwo <= 128; factorOfTwo*=2) {
        if (number / factorOfTwo >= 1){
            System.out.print("1");
            number -= factorOfTwo;
        }
        else System.out.print ("0");
    }

试着把它写在纸上。为什么你认为
number/factorOfTwo>=1
是正确的?如果数字是
2
,并且您使用
factorOfTwo==1运行该函数以获得最低有效位,会发生什么情况?另外-想想你输出字节的顺序-你应该从最高值位还是最低值位开始?明白了!谢谢你,好先生!编辑:不,我没有,萝莉一直在这部电影中扮演主角,没有开玩笑,整整一个小时。我一直认为我的错误在我的while循环中,就像上面的海报所写的那样,但我无法想象它。非常感谢。
for (factorOfTwo = 128; factorOfTwo >= 1; factorOfTwo /= 2)