【问题标题】:Construct a Xor Operation with || and &&, cannot run the right result使用 || 构造 Xor 运算和 &&,不能运行正确的结果
【发布时间】:2019-03-23 21:26:59
【问题描述】:

下面的代码会要求用户输入一行二进制数(如 01010011 ),然后程序需要将第一个数字与第二个数字进行异或,如果结果为真,则返回 1,否则返回 0。然后用第三个数字异或这个结果......直到最后一个数字。以下是我的代码,我尝试了一整晚,但从未得到正确的结果。任何人都可以看一下代码吗?谢谢!

    char input1;
    char input2;

    Scanner scan = new Scanner( System.in );

    System.out.print("Please enter your value> ");
    input = scan.next();  


    input1 = input.charAt(0);

    for( int i = 1; i < input.length(); i++ )
    {
        input2 = input.charAt(i);

        if ( ( ( input1 == '1' || input2 == '0' ) && input1 != input2 )
                || ( ( input1 == '0' || input2 == '1' ) && input1 != input2 ) )
        {
            input1 = '1';
        }

        if ( input1 == input2 )
        {
            input1 = '0';
        }
    }

    System.out.println( "The result is " + input1 ); 

【问题讨论】:

    标签: java loops logical-operators


    【解决方案1】:

    你的代码判断好像错了,当input1为0,input2为1时,你的代码会错,应该是这样:

        if ( ( ( input1 == '1' || input2 == '0' ) && input1 != input2 )
                || ( ( input1 == '0' || input2 == '1' ) && input1 != input2 ) )
        {
            input1 = '1';
        } 
        else if ( input1 == input2 )
        {
            input1 = '0';
        }
    

    【讨论】:

      【解决方案2】:

      我将从xor 方法开始,返回'1' iff a 是一个 b 是一个但a 和@ 987654326@ 不是一个。否则,返回'0'。那是一个异或。喜欢,

      private static char xor(char a, char b) {
          boolean isa = (a == '1'), isb = (b == '1');
          if (isa || isb) {
              if (!(isa && isb)) {
                  return '1';
              }
          }
          return '0';
      }
      

      然后您的main 需要获取用户输入并迭代xor 字符。喜欢,

      public static void main(String[] args) {
          Scanner scan = new Scanner(System.in);
      
          System.out.print("Please enter your value> ");
          String input = scan.nextLine();
          char ch = input.charAt(0);
          for (int i = 1; i < input.length(); i++) {
              ch = xor(ch, input.charAt(i));
          }
          System.out.println("The result is " + ch);
      }
      

      【讨论】:

        猜你喜欢
        • 2017-04-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-18
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多