2015-04-12 3 views
0

Я делаю ревизию для моего предстоящего теста Java, и я застрял в части, и я не могу ее решить.Проверить номера между двумя целыми числами

Q: Возьмите 2 Целое число, от Int A до Int B, покажите X, если X делится на 6 ИЛИ 5, но не на обоих, и напечатайте новую строку после каждых 10 чисел.

Ниже мой текущий код:

public static void main(String[] args) { 
    // TODO code application logic here 
    Scanner sc = new Scanner(System.in); 
    int numOne = sc.nextInt(); 
    int numTwo = sc.nextInt(); 
    int line = 1; 

    while (numTwo > numOne) { 

     if (line%11==0){ 
      System.out.println(""); 
     } 

     if ((numOne % 5 == 0) && (numOne % 6 != 0)) { 
      System.out.print(numOne + " "); 
      line++; 
     } 
     if ((numOne % 6 == 0) && (numOne % 5 != 0)) { 
      System.out.print(numOne + " "); 
      line++; 
     } 
    } 
    numOne++; 
} 

ответ

2

Изменить код

while (numTwo > numOne) { 

     if (line%11==0){ 
      System.out.println(""); 
     } 

     if ((numOne % 5 == 0) && (numOne % 6 != 0)) { 
      System.out.print(numOne + " "); 
      line++; 
     } 
     if ((numOne % 6 == 0) && (numOne % 5 != 0)) { 
      System.out.print(numOne + " "); 
      line++; 
     } 
     numOne++; 
    } 

numOne++; Move внутри цикла. Вы не меняете какой-либо переменный внутренний цикл, так что вы получите бесконечный цикл

2

Ваш код дает бесконечный цикл, поскольку numOne увеличивается вне время цикла. Просто переместите его внутрь, и он работает правильно.

+0

спасибо! я не понял, что я оставил прирост вне – gymcode

1

Вы - инкремент вне цикла while. Вам нужно увеличить numOne в конце тела цикла.

В настоящее время у вас есть бесконечный цикл. Поскольку numOne никогда не изменяется, numTwo всегда больше numOne.

использовать также исключающее ИЛИ ^, это сделало бы этот вопрос намного проще: http://www.programmerinterview.com/index.php/java-questions/xor-in-java/

while (numTwo > numOne) { 

    if (line%11==0){ 
     System.out.println(""); 
    } 

    if ((numOne % 5 == 0) && (numOne % 6 != 0)) { 
     System.out.print(numOne + " "); 
     line++; 
    } 
    if ((numOne % 6 == 0) && (numOne % 5 != 0)) { 
     System.out.print(numOne + " "); 
     line++; 
    } 
    numOne++; 
} 
1

Вы также можете написать:

if ((numOne % 5 == 0 || numOne % 6 == 0) && numOne % 30 != 0) 
Смежные вопросы