java查找1的补码

时间:2014-09-07 18:49:42

标签: java arrays

写一个递归程序,它取一个长度为N的字符串,只包含0和1作为输入和 对字符串中指定的二进制数执行1的补码。如何做的一个例子 程序应该转换给定的输入在这里给出:

  

输入:010001001→110001001→100001001→... 101110110(输出)

import edu.princeton.cs.introcs.StdOut;

public class labb1q1b {

    public static void main(String[] args)
    {
        String b = "010001001";
        StdOut.print(invert(b));
    }


    public static String invert(String input) 
    {

        String temp = "";
        for(int i = input.length(); i >= 0; i--)
        {
            temp += Character.getNumericValue(input.charAt(i));
        }
        return temp;
    }
}

2 个答案:

答案 0 :(得分:0)

这不是递归。要递归,请使用同一方法中的方法。在你的情况下,你可以在其中调用invert()来连续编辑字符串,与for循环相同但是。

答案 1 :(得分:-1)

编辑:Character.getNumericValue在这里工作,假设。但它对无效输入行为错误,例如'A'(返回10)或'$'(返回-1)。为了将来参考,它可以假设使用,但最好以这种方式阅读。

以下是修复:您要检查特定点的字符,如果是'0',请添加"1",否则添加"0"

使用此:

    public static String invert(String input) 
    {

        String temp = "";

        //Iterate thru all of the characters in the string, in order of first to last
        for(int i = 0; i < input.length(); i++)
        {
            if (input.charAt(i) == '0') {
                temp += "1";
            } else {
                temp += "0";
            }
        }
        return temp;
    }

另外,请注意我已经交换了for循环运行的顺序。这样可以防止字符串被反转,并且还可以防止出现超出范围的错误。