Построить операцию Xor с ||и && не может запустить правильный результат - PullRequest
0 голосов
/ 19 октября 2018

В следующем коде пользователям будет предложено ввести строку двоичного числа (например, 01010011), а затем программе потребуется выполнить Xor первую цифру со второй, если результат верен, вернуть 1, если нет, вернуть 0.Затем Xor этот результат с третьей цифрой ... до последней цифры.Вот мой код, я пробовал всю ночь, но так и не получил правильного результата.Кто-нибудь может взглянуть на код?Спасибо!

    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 ); 

Ответы [ 2 ]

0 голосов
/ 19 октября 2018

Ваш код кажется неправильным, когда 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';
    }
0 голосов
/ 19 октября 2018

Я бы начал с метода xor, вернул бы '1' если a это один или b один, но оба a и bне одинВ противном случае верните '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);
}
...