我如何获取输出以反向读取我的二进制数字?

时间:2018-10-19 19:29:31

标签: java

首先,我想输入任何数字,并以二进制形式输出该数字。但是,我的问题是,每当我输入我的号码时,它就会被反向读取。

例如:

         input: 14
         binary number:0111

我想要的是

         input: 14
         binary number:1110

这是我的代码:

package poro;
import java.util.Scanner;

public class Poro {

    public static void main(String[] args) {
        {
        Scanner s = new Scanner(System.in);
        int z;
        int a;
        String x = "";
        System.out.print("input:");
        z = s.nextInt();
        while(z > 0)
        {
            a = z % 2;
            if(a == 1)

            {

            }
            x = x + "" + a;
            z = z / 2;

        }
        System.out.println("Binary number:"+x);

    }

}}

5 个答案:

答案 0 :(得分:0)

您获得的每个二进制数字都将其附加在结果字符串的末尾,并由x = x + "" + a;附加。
如果在开始时添加它,则将获得正确的结果,所以这样做:
x = a + x;

答案 1 :(得分:0)

x = x + "" + a;

由于这会附加新的数字,因此MSB将始终位于输出的右侧。您想在新数字前加上

x = a + x;

或者,

x = Integer.toBinaryString(z);

一次完成所有操作。

答案 2 :(得分:0)

您可以在计算的数字前添加数字,而不是附加数字:

*Mickey *Minnie    Huey  Donald Scrooge   Daffy  Minnie  Mickey 
      1       1       1       2       1       1       2       1 

不过,将x = a + "" + x; 定义为x,然后调用

会更容易。
StringBuilder

答案 3 :(得分:0)

您可以在字符串上使用StringBuilder的类reverse()方法:

System.out.println("Binary number:" + new StringBuilder(x).reverse().toString());

input:14
Binary number:1110

答案 4 :(得分:0)

这是一个很好的提示,这就是我在不增加任何导入的情况下所做的事情。

您将需要一个称为for的循环。 这就像您拥有的while循环,但对如何更改稍后要在您的类中使用的数组内部的值具有更多控制权(猜测是因为问题的级别)。 / p>

您将需要另一个String让我们致电String backwords ="";

一个for循环,如下所示:

    for(int i=0; i<=x.length()-1; i++){
        //code to make backwords
    }
    System.out.println("backwords text : " + backwords);

此循环被设置为只要String x一直循环。 您需要做的就是获取所需值的substring并将其添加到我们之前创建的backwords值上。

因此,如果我们有一个像鸡肉一样的String,而我想在鸡肉中得到'k' 我将要在substring上做一个String来保存这样的价值鸡肉:

String chi = "chicken";
String getK = chi.substring(4,5);
System.out.println(getK);

如果我们在本示例中使用x,则可以构建新的向后值。 唯一的窍门是,我们需要将其添加到倒退String上,直到循环结束。