2016-02-15 3 views
-5

меня это назначение:Java получить сумму от Если заявление

Напишите программу Java, которая находит все нечетные числа от 1 - 50, которые делятся на 7, но суммирует только четные числа, делящиеся по 9.
Печать суммы.
Печать количества нечетных чисел, которые делятся на 7.
Печать числа четных чисел, которые делятся на 9 в этом диапазоне.

Это мой код:

int sNumber = 0; 
    for(int aNumber= 1; aNumber <= 50; aNumber++) 
    { 
    if (aNumber % 7 == 0) 
     if(aNumber % 2 == 1)     
     System.out.println("These are odd"+" "+ aNumber);         
    }    
    for(int bNumber=1 ; bNumber < 50; bNumber++) 
    { 
    if (bNumber % 9 == 0) 
     if(bNumber%2 == 0)         
     System.out.println("These are even"+" "+bNumber); 
    } 

Я застрял с проставлением bNumbers в виде суммы, любая помощь?

+0

'sNumber + = номер B;'? – SomeJavaGuy

+1

'int sum = 0;' 'sum + = bNumber;'? – Guy

+0

Пожалуйста, рассмотрите то, что я написал в своем ответе, и попытайтесь понять, как это получается. – Tacocat

ответ

2

Идея состоит в том, чтобы начать с создания переменной для хранения sum. Он должен начинаться с 0. Всякий раз, когда вы находите четное число, которое делится на 9, вы добавляете его в sum. К концу вашего цикла for, когда вы повторили все ваши номера, у вас будет общее количество всех ваших четных чисел, которые делятся на 9 в вашей переменной sum.

В моем коде ниже я также использовал два целых числа countEven и countOdd, чтобы отслеживать количество соответствующих номеров. counteven увеличивается каждый раз, когда найдено четное число, делящееся на 9, и countodd увеличивается на единицу, если найдено нечетное число, делящееся на 7.

Примечание: это всегда хорошая практика, чтобы использовать фигурные скобки для всех for, if, while и других подобных заявлений/петель, даже если блок содержит только одну строку кода для выполнения.

int countEven = 0, countOdd = 0, sum = 0; 

for(int i= 1; i <= 50; i++){ 

    if ((i % 7 == 0) && (i % 2 == 1)) { 
     System.out.println("This is an odd number that is divisible by 7: " + i); 
     countOdd++; 
    } 

    if ((i % 9 == 0) && (i % 2 == 0)) { 
     System.out.println("This is an even number that is divisible by 9: " + i); 
     countEven++; 
     sum += i; 
    } 
} 

System.out.println("These are " + countOdd " odd numbers thare are divisible by 7 and " + countEven + " even numbers that are divisible by 9."); 
System.out.println("Sum of even numbers that are divisible by 9: " + sum); 
+0

Если я могу задать вопрос, зачем устанавливать int counteven, countodd как в 0 в начале; то с циклом for вам нужно было только сделать это один раз? как вы закрываете его при продолжении ?; У меня была проблема, когда я пытался закрыть, и system.out.print, чтобы вводить слова и переменные, он сказал бы мне, что не существует существующей переменной. – NYCCTAndre

+0

Прошу прощения. Я не совсем понимаю ваш вопрос. Я использовал 'countEven', чтобы подсчитать количество четных чисел и' countOdd', чтобы подсчитать количество нечетных чисел. Таким образом, две переменные служат двум различным целям. Когда я нахожу нечетное число, я увеличиваю 'countOdd', и я не увеличиваю' countEven'. Отвечает ли это на ваш вопрос? – Tacocat

+0

Что вы подразумеваете под ** закрыть его **? – Tacocat

0

Вам нужно просто добавить к вашему второму циклу sNumber += bNumber;

рассмотреть Кроме того, используя оператор И вместо вложенного если заявления.

int sNumber = 0; 
     for (int aNumber = 1; aNumber <= 50; aNumber++) { 
      if (aNumber % 7 == 0 && aNumber % 2 == 1) { 
       System.out.println("These are odd" + " " + aNumber); 
      } 
     } 
     for (int bNumber = 1; bNumber <= 50; bNumber++) { 
      if (bNumber % 7 == 0 && bNumber % 2 == 1) { 
       System.out.println("These are even" + " " + bNumber); 
       sNumber += bNumber; 
      } 
     } 
     System.out.println("Sum of even numbers" + " " + sNumber); 

Надеюсь, что это поможет.

1

Для этого вам не нужны две петли, это можно сделать в одном.

Проверьте номер текущего против двух условий у вас есть:

if(i % 2 == 0 && i % 7 == 0) 
    sumOfEven += i; 
if(i % 2 != 0 && i % 9 == 0) 
    countOdd++; 
Смежные вопросы