問題描述
我正在編寫一個代碼,它將二進制數字轉換為相應的單詞值.
I am working on a code that will convert binary digits to its corresponding value in words.
例如,我輸入3",代碼會將數字轉換為11",即3"的二進制表示.代碼將繼續將11"轉換為one one",然后輸出.
For example, I would input "3" and the code will convert the number to "11", which is the binary representation of "3". The code will proceed to convert that "11" to "one one" which will be outputted.
我已經寫了二進制轉換部分,但是我很難將它轉換為單詞.
I have already wrote the binary conversion part, but I am having difficulty converting it to words.
public class BinaryWords {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String S = sc.nextLine(); //how many times the for loop will repeat
for (int i = 0; i < S.length() + 1; i++) {
int A = sc.nextInt(); //input the number
String convert = Integer.toBinaryString(A); //converts the number to binary String
String replace = convert.replaceAll("[1 0]", "one, zero "); //replaces the String to its value in words
System.out.println(replace);
}
}
}
我嘗試將 replaceAll 函數與正則表達式 [1, 0] 一起使用,(我認為)它將(兩者?)1 和 0 轉換為下一個字段中指定的序列.
I tried using the replaceAll function with the regex [1, 0], which (I think) will convert (both?) 1 and 0 to the sequence specified in the next field.
我想將每個 1 轉換為一",將每個 0 轉換為零".
I would like to convert every 1 to a "one" and every 0 to a "zero".
感謝任何幫助,謝謝!
推薦答案
你不需要使用正則表達式,你可以使用兩個替換來解決你的問題:
You dont need to use regex, you can use two replace to solve your problem :
String replace = convert.replace("1", "one ").replace("0", "zero ");
<小時>
例子:
int i = 55;
System.out.println(Integer.toBinaryString(i));
System.out.println(Integer.toBinaryString(i).replace("1", "one ").replace("0", "zero "));
輸出
110111
one one zero one one one
<小時>
一年多后修改.
Edit after more than one year.
作為 @Soheil Pourbafrani 在評論中詢問,是否可以只遍歷字符串一次,是的,你可以,但你需要像這樣使用循環:
As @Soheil Pourbafrani ask in comment, is that possible to traverse the string only one time, yes you can, but you need to use a loop like so :
int i = 55;
char[] zerosOnes = Integer.toBinaryString(i).toCharArray();
String result = "";
for (char c : zerosOnes) {
if (c == '1') {
result += "one ";
} else {
result += "zero ";
}
}
System.out.println(result);
=>one one two one one one
Java 8+
如果您使用的是 Java 8+,或者更簡單,您可以使用:
Java 8+
Or more easier if you are using Java 8+ you can use :
int i = 55;
String result = Integer.toBinaryString(i).chars()
.mapToObj(c -> (char) c == '1' ? "one" : "two")
.collect(Collectors.joining(" "));
=>one one two one one one
這篇關于用多個不同的字符替換 String 中的多個字符的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!