2016-07-06 16 views
0

В этом сегменте кода, из всего, что я вижу, он должен вводить цикл for, а затем оператор if, если вы вводите 1 и 0, что я и делаю. Он не входит в него, как я видел из моих заявлений на печать.Ввод оператора if

Я не вижу причины, почему.

Если бы это было ввести if заявление, я не уверен, что делать, потому что мои подозрения в том, что он будет только установить true, если последний бит не 1 или 0: мое намерение быть для zeroesAndOnes быть false если что-нибудь кроме 1 и 0. Однако, так оно и есть, это false все время.

System.out.println("Please enter a 32 bit number consisting of " 
         + "1's and 0's."); 
    String number = kb.nextLine(); 
    int count = 0; 
    boolean zeroesAndOnes = false; 
    for(int i = 0; i < number.length(); i++){ 

     if(number.charAt(i) == '0' || number.charAt(i) == '1'){ 

      zeroesAndOnes = true; 
      System.out.println("If boolean " + zeroesAndOnes); 
     } 

     else{ 

      zeroesAndOnes = false; 
      count++; 
     } 
    } 
    System.out.println("If boolean end " + zeroesAndOnes); 


    if(number.length() == 32 && count > 1){ 

     if(number.charAt(0) + number.charAt(1) % 2 == 1){ 
      symmDiff = 1; 
      } 
     else{ 
      symmDiff = 0; 
     } 
for(int i = 2; i < number.length(); i++){ 

       if((symmDiff + number.charAt(i)) % 2 == 1){ 
        symmDiff = 1; 
       } 
       else{ 
        symmDiff = 0; 
       } 

      } 

      System.out.println("The parity bit for this number is " + symmDiff); 
     } 
     else{ 
      System.out.println("These numbers do not match the specification."); 
     } 
+6

'number.charAt (я) == 0 'Вы, вероятно, хотите сравнить полукокса значения здесь, например,' number.charAt (я) == «0'' – copeg

+0

Спасибо! Это исправило эту проблему. Есть ли у вас какие-либо идеи о второй части - с тем, как я ее сейчас, конечный бит определяет, является ли это истиной или ложью. Я хотел, чтобы это было правдой, только если ВСЕ бит 1 или 0, но я ничего не могу придумать. – Tonantzin

+1

Остановите настройку «true», если вы найдете «1» или «0». Инициализируйте логическое значение «true» вместо «false» и установите его только «false», если есть нарушение. Никогда не устанавливайте его на 'true', если это' false'. –

ответ

2

При проверке равенства символов убедитесь, что сравнение - это то, что вам нужно. Например,

if(number.charAt(i) == 0) 

проверяет равенство десятичных знаков. Для проверки фактического «0» полукокса, сравните значение обугленного

if (number.charAt(i) == '0') 
+0

Спасибо, а! Я тоже спрошу вас ... У вас есть идеи о второй части - с тем, как я ее сейчас, конечный бит определяет, является ли это истиной или ложью. Я хотел, чтобы это было правдой, только если ВСЕ бит 1 или 0, но я ничего не могу придумать. – Tonantzin

+0

Вы можете проверить ввод пользователя несколькими способами. Можно было бы подсчитать каждое правильное значение, а затем проверить, соответствует ли этот счет ожидаемой длине - если так установлено «zeroesAndOnes» - true – copeg

+0

Я добавил остальную часть моего кода выше, и у меня была аналогичная мысль, прежде чем я прочитал это использовать счетчик для ложного значения. Но теперь, независимо от того, что я вложил, я всегда получаю сообщение «Эти цифры не соответствуют спецификации». – Tonantzin

0

для сравнения полукокса следует использовать

if(number.chartAt(i) == '0') 

Другой проблемой является number.charAt (0) даст вам не использовал строки INT , поэтому, когда вы делаете

number.charAt(0)+number.charAt(1) //you are concatenating character at index 0 and index 1 
// do this 
int first = Integer.parseInt(number.substring(0,1)); 
int second = Integer.parseInt(number.substring(1,2)); 
if((first+second)%2 == 1){ 
    // your statement 
} 
+0

Я даже не заметил эту ошибку. Спасибо! Когда я попытался изменить это для цикла for, я не смог заставить его работать: if ((symmDiff + number.substring (i, i + 1))% 2 == 1) {Я никогда раньше не использовал подстроку. Он жаловался на оператора мод в этой части. – Tonantzin

+0

Подождите, я изменил это и добавил для (INT I = 2; г Tonantzin

+0

Что такое 'if ((symmDiff + num1)% 2 == 1' all about? Из того, что я могу сказать, это эквивалентно' if (symmDiff! = Num1) '. –

 Смежные вопросы

  • Нет связанных вопросов^_^