首先,我想输入任何数字,并以二进制形式输出该数字。但是,我的问题是,每当我输入我的号码时,它就会被反向读取。
例如:
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);
}
}}
答案 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
上,直到循环结束。