[英]Print pattern using java?
您能幫我如何使用Java打印以下格式嗎?
0001
0010
0100
1000
下面的代碼沒有給我想要的輸出。
public static void main(String[] args) {
if (args.length > 0) {
int n = Integer.parseInt(args[0]);
int m = 1;
for (int i = 1; i <= n; ++i) {
m *= 2;
}
System.out.println("# bits : " + n);
System.out.println("# values: " + m);
String format = "%" + n + "s";
for (int i = 0; i < m; ++i) {
System.out.println(String.format(format, Integer.toString(i, 2)));
}
} else {
System.out.println("Usage: BinaryDemo <n>");
}
}
public static void main(String[] args) {
for (int i = 0; i < 4; i++) {
System.out.format("%04d%n", Integer.parseInt(Integer.toString((int) Math.pow(2, i), 2)));
}
}
編輯:
public static void main(String[] args) {
int n = 5, padding = findPadding((int) Math.pow(2, n - 1));
for (int i = 0; i < n; i++) {
printBinary((int) Math.pow(2, i), padding);
}
}
static int findPadding(int value) {
int bitCount = Integer.toString(value, 2).length(), padding;
for (int i = 2; ; i++) {
padding = (int) Math.pow(2, i);
if (padding >= bitCount) {
return padding;
}
}
}
static void printBinary(int value, int padding) {
String binaryString = String.format("%0" + padding + "d", Integer.parseInt(Integer.toString(value, 2)));
int i = 0;
for (char ch : binaryString.toCharArray()) {
System.out.print(ch);
if (++i == 4) {
System.out.print(" ");
i = 0;
}
}
System.out.println();
}
輸出:
0000 0001
0000 0010
0000 0100
0000 1000
0001 0000
您無需遍歷m
打印圖案。 您可以使用n
用戶輸入來形成圖案,並在第一個循環內打印它。
String format = "%0"+n+"d%n";
for (int i = 0; i < n; ++i) {
System.out.format(format, Integer.parseInt(Integer.toString(m, 2)));
m = m << 1;
}
我嘗試了這個:
for (int i = 0; i < m; ++i) {
// modified this line - format (above) not needed anymore
// n below refers to the number of bits calculated above so it will pad correctly
System.out.format("%0" + n + "d%n", Integer.parseInt(Integer.toString(i, 2)));
}
似乎可以工作
String.format
(以及System.out.format
)也支持多種模式。 您必須查看Formatter
-Class的Javadoc才能找到它。
您所做的事幾乎是正確的,但是標志0
僅適用於數字,因此%4s
將不起作用。 使用%04d
之類的數字轉換( d
, f
等)時,如果輸出少於4位,則輸出將具有附加的零。 也可以使用空白而不是零。
String pattern = "%04d";
System.out.println(String.format(pattern, 1));
System.out.println(String.format(pattern, 11));
System.out.println(String.format(pattern, 111));
System.out.println(String.format(pattern, 1111));
System.out.println(String.format(pattern, 11111));
輸出:
0001
0011
0111
1111
11111
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.