簡體   English   中英

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

[英]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;    
}

https://ideone.com/sn709k

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM