Java 程序打印 unicode 值而不是字符串

Java program printing unicode values instead of string

我正在尝试添加 2 个二进制字符串,但得到的结果是 Unicode

输入: "11""1"

输出: "\u0001\u0000\u0000"

我想要我的答案 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;    
    }
}

计算出要附加到结果字符串的值后,您需要将二进制值 (0, 1, …) 转换回字符 ('0', '1', …) .

这个:

ans=(char)(add%2)+ans;

应该是这样的:

ans = (char)((add%2) + '0') + ans;

好的。解析两个 String(s) 并添加值。 Return 二进制数字的 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

在另一个字符串部分的开头添加是不正确的。你需要使用 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;    
}

https://ideone.com/sn709k