[英]Java program printing unicode values instead of string
我正在嘗試添加 2 個二進制字符串,但結果是 Unicode
輸入: "11""1"
輸出: "\\ \ "
我希望我的答案是100
class Solution {
public String addBinary(String a, String b) {
String ans=new String();
int i=a.length()-1;
int j=b.length()-1;
int carry=0;
while(i>=0 || j>=0 || carry==1){
int add=carry;
if(i>=0) add+=a.charAt(i)-'0';
if(j>=0) add+=b.charAt(j)-'0';
ans=(char)(add%2)+ans;
carry=add/2;
i--;
j--;
}
return ans;
}
}
行。 解析兩個String
(s) 並添加值。 將結果作為二進制數字String
返回。 我會把它變成一個static
方法。 像,
public static String addBinary(String a, String b) {
return Integer.toBinaryString(Integer.parseInt(a, 2)
+ Integer.parseInt(b, 2));
}
public static void main(String[] args) {
System.out.println(addBinary("1", "11"));
}
輸出(根據要求)
100
確定要附加到結果字符串的值后,您需要將二進制值 (0, 1, ...) 轉換回字符 ('0', '1', ...)。
這:
ans=(char)(add%2)+ans;
應該是這樣的:
ans = (char)((add%2) + '0') + ans;
在另一個字符串部分的開頭添加是不正確的。 你需要使用ans="" + (add%2) + ans;
public String addBinary(String a, String b) {
String ans="";
int i=a.length()-1;
int j=b.length()-1;
int carry=0;
while(i>=0 || j>=0 || carry==1){
int add=carry;
if(i>=0) add+=a.charAt(i)-'0';
if(j>=0) add+=b.charAt(j)-'0';
ans="" + (add%2) + ans;
carry=add/2;
i--;
j--;
}
System.out.print("ans=" + ans);
return ans;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.