有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我试图添加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;    
    }
}

共 (3) 个答案

  1. # 1 楼答案

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

    这:

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

    应该是这样的:

    ans = (char)((add%2) + '0') + ans;
    
  2. # 2 楼答案

    嗯。解析两个String并添加值。以二进制数字的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
    
  3. # 3 楼答案

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