2015-12-09 4 views
0

Мои указания - написать код (в java), который находит код между 1000 и 9999 (любое 4-значное число), который соответствует четырем квалификациям:У меня возникают проблемы с циклом, моя ошибка связана с &&

  1. Все четыре цифры различны.
  2. Цифра в тысячах местах в 3 раза превышает цифру в десятом месте.
  3. Число нечетное.
  4. Сумма цифр 27.

Это то, что я до сих пор. Я получаю сообщение об ошибке при моем //loop разделе:

C4PP10.java:27: error: bad operand types for binary operator '&&'" 

это ошибка, которая появляется.

В моей голове && просто означает «и», я использую его неправильно?

Это для моего вступления в домашнюю работу класса java BTW.

public class C4PP10 
{ 
    public static void main(String[] args) 
    { 
     //variables 
     int first=1; 
     int second=0; 
     int third=0; 
     int fourth=0; 
     int total = first * 1000 + second * 100 + third * 10 + fourth; 
     boolean fourDifferentDigits = false; 
     boolean thousandsPlaceX3TensPlace = false; 
     boolean odd = false; 
     boolean sum = false; 
     boolean correctAddress = false; 

     //loop 
     while (correctAddress = false) 
     { 
      fourth = fourth + 1; 
      if (fourth == 10) 
      { 
       fourth = 0 && third = third + 1; 
      }//end if 
      if (third == 10) 
      { 
       third = 0 && second = second + 1; 
      }//end if 
      if (second == 10) 
      { 
       second = 0 && first = first + 1; 
       total = first * 1000 + second * 100 + third * 10 + fourth; 
      }//end if 
     }//end loop 


     //testing 
     if (first != second && first !=third && first !=fourth && second !=third &&     second !=fourth && third != fourth) 
     { 
      fourDifferentDigits = true; 
     }//end if 

     if (first == third*3) 
     { 
      thousandsPlaceX3TensPlace = true; 
     }//end if 

     if (fourth%2 != 0) 
     { 
      odd = true; 
     }//end if 

     if (first + second + third + fourth == 27) 
     { 
      sum = true; 
     }//end if 

     if (fourDifferentDigits=true && thousandsPlaceX3TensPlace=true && odd=true && sum=true) 
     { 
      correctAddress = true; 
     }//end if 

     if (correctAddress = true) 
     { 
      System.out.println("The Riddler plans to strike " + total + " Pennsylvania  Avenue!"); 
     } 

    }//end main 
}//end class 
+6

'&&' - логический оператор, а не забавный способ написания английского соединения «и». Это далеко, гораздо меньше, чем английский союз. – user2357112

+0

Просто подумал, что добавлю, цель моей петли состоит в том, чтобы в принципе добавить 1 к четвертой цифре, тогда, когда четвертая цифра достигает 10, добавьте одну к третьей цифре и сбросьте четвертую цифру в 0, подсчитав по существу, спасибо снова всем, кто смотрит на мой код для меня! – DGGG

+1

Да. Вы хотите ';' где у вас есть '&&' – Draco18s

ответ

0

Так много ошибок форматирования, убедитесь, что для сравнения == вместо = для логических выражений и использовать отступы для удобства чтения. Использовать только && в логическом выражении, а не как дополнение к заявлению. Вы также можете определить несколько переменных в начале, используя запятую (,), вместо того, чтобы каждый раз вводить int.

public class C4PP10 
{ 
    public static void main(String[] args) 
    { 
     //variables 
     int first = 1, second = 0, third = 0, fourth = 0; 
     int total = first * 1000 + second * 100 + third * 10 + fourth; 
     boolean fourDifferentDigits = false, thousandsPlaceX3TensPlace = false; 
     boolean odd = false, sum = false, correctAddress = false; 

     while (correctAddress == false) // or while (!(correctAddress)) 
     { 
      fourth = fourth + 1; 
      if (fourth == 10) 
      { 
       fourth = 0; 
       third = third + 1; 
      }     
      if (third == 10) 
      { 
       third = 0 
       second = second + 1; 
      } 
      if (second == 10) 
      { 
       second = 0 
       first = first + 1; 
       total = first * 1000 + second * 100 + third * 10 + fourth; 
      } 
     } 


     if (first != second && first != third && first != fourth && second !=third && second !=fourth && third != fourth) 
     { 
      fourDifferentDigits = true; 
     } 

     if (first == third * 3) 
     { 
      thousandsPlaceX3TensPlace = true; 
     } 

     if (fourth % 2 != 0) 
     { 
      odd = true; 
     } 

     if (first + second + third + fourth == 27) 
     { 
      sum = true; 
     } 

     if (fourDifferentDigits == true && thousandsPlaceX3TensPlace == true && odd == true && sum == true) 
     { 
      correctAddress = true; 
     } 

     if (correctAddress == true) 
     { 
      System.out.println("The Riddler plans to strike " + total + " Pennsylvania Avenue!"); 
     } 

    } 
} 
+0

Не путать OP с другим оператором, но второй, чтобы продолжить if-statement, можно заменить на 'correctAddress = fourDifferentDigits & thousandPlaceX3TensPlace & odd & sum'. Действительно, все операторы if могут быть удалены и переменные, назначенные для проверок. –

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