[英]How do I reverse the order of a series of numbers that are generated from a while loop?
我有一些代碼可以將十進制轉換為二進制,但是使用轉換方法時,這里的數字將以正確二進制的相反順序打印。 如何在不更改轉換方法或刪除while循環的情況下反轉得到的結果? 我當時正在考慮在循環中創建一個數組,然后在for循環中創建一個數組,該數組將以相反的順序打印出數字,但是我不知道如何使用Java進行此操作。
System.out.println("Enter a number: ");
int num = user.nextInt();
while (num > 0) {
int remainder = num % 2;
num = num / 2;
if(remainder > 0) {
System.out.print("1");
}else if (remainder == 0) {
System.out.print("0");
}else {
}
}
無需立即將其打印出來,而是將輸出保存到StringBuilder,然后在完成時將其反轉
樣品
System.out.println("Enter a number: ");
StringBuilder buf = new StringBuilder ();
int num = user.nextInt();
while (num > 0) {
int remainder = num % 2;
num = num / 2;
if(remainder > 0) {
buf.append("1");
}else if (remainder == 0) {
buf.append("0");
}else {
// not sure what your logic is here
}
}
buf.reverse();
System.out.println (buf.toString());
要么
因為@billk暗示您可以在零位置插入“ 0”或“ 1”字符串,因此實際上您是在prepending
加上字符串而不是在后面。 然后,您將不需要reverse
StringBuilder對象
while (num > 0) {
int remainder = num % 2;
num = num / 2;
if(remainder > 0) {
buf.insert(0, "1");
}else if (remainder == 0) {
buf.insert(0, "0");
}else {
// not sure what your logic is here
}
}
System.out.println (buf.toString());
最簡單的事情就是隨手構建字符串:
String result = "";
while (num > 0) {
if (num % 2 == 0)
result = "0" + result;
else
result = "1" + result;
num /= 2;
}
System.out.println(result);
以下代碼可用於轉換8位整數,8位二進制字符串
String.format(”%8s”, Integer.toBinaryString(x)).replace(’ ’, ’0’))
如果您已經有代碼,但是只需要反轉它,則使用StringBuilder類存儲您的字符串值,然后使用StringBuilder類的reverse()
方法。
可以在下面找到有關StringBuilder類的更多詳細信息
https://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html#reverse()
使用數組的工作代碼:如果要使用數組,可以使用類似的方法。
import java.util.Scanner;
public class Rev {
private Scanner user;
Rev() {
user = new Scanner(System.in);
System.out.println("Enter a number: ");
int num = user.nextInt();
int binary[] = new int[40]; // you can use an array like this
int index = 0;
while (num > 0) {
binary[index++] = num % 2;
num = num / 2;
}
if (binary.length != 0) {
for (int i = index - 1; i >= 0; i--) {
System.out.print(binary[i]);
}
}
}
public static void main(String args[]) {
new Rev();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.