Contador que sume de 2 en 2

Es mi primer post en este foro, estoy empezando a programar, y me ha surgido esta duda en un ejercicio. Tengo que hallar la suma de los 20 números siguientes a un número introducido por teclado, y la suma de los 20 números pares siguientes. Este es mi código:

if(numero%2==0){
     boolean par=true;
  }else{
     boolean par=false;
  }

  if(par==true){

     for(int i=numero, j=numero+40;i<=j;i+2){   //Este i+2 es lo que tengo mal
        total_par=total_par+i;
     }
  }else{

     for(int i=numero+1,j=numero+40;i<=j;i+2){  //Aquí también
        total_par=total_par+i;
     }
  }

Gracias

5
задан 01.11.2016, 15:13
4 ответа

i+2 deberГ, - чтобы меняться

i = i + 2

или

i += 2

Выбери того, которого ты предпочитаешь.

11
ответ дан 24.11.2019, 12:49
  • 1
    Большое спасибо, не hab и # 237; в ca и # 237; do. – MigherdCas 01.11.2016, 15:14
  • 2
    @MigHc Считай принимать ответ, если он решил твою проблему. Для этого, у тебя есть tick в левой стороне ответа, ты это помечаешь как зеленый и готовый:) таким образом, пользователи, которые заканчивали бы тем, что видели твой вопрос в будущем, podr и # 225; n видеть способа много м и # 225; s яичный белок, который был soluci и # 243; n в проблему. Спасибо! – Francisco Romero 01.11.2016, 15:41
  • 3
    hab и # 237; в попробованный давать, но hab и # 237; который ждать 10 mins и перемещали меня. Уже est и # 225; принятый, спасибо за это то, чтобы помнить – MigherdCas 01.11.2016, 16:27
  • 4
    @MigHc ничего. Есть во много людей, которые забывают ему из-за этого же самого raz и # 243; n. Много другая, которую они это не знают полностью. Просто я пробую помогать делать лучшее сообщество:) – Francisco Romero 01.11.2016, 16:41

Также ты можешь использовать формулу:

int total;
if (num % 2 == 0) {
    // k + k + 2 + k + 4 + k + 6 + ... + k + 40
    // k + 20k + 2 + 4 + 6 + ... + 40
    // k + 20k + 20 * (20 + 1)
    // 21k + 420
    total = 21 * num + 420;
} else {
    // k + k + 1 + k + 3 + k + 5 + ... + k + 39
    // k + 20k + 1 + 3 + 5 + ... + 39
    // k + 20k + 20 * 20
    // 21k + 400
    total = 21 * num + 400;
}
System.out.println(total);
  • Если num = 1, тогда 1 больше следующие 20 четных чисел он 1 + 2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 + 22 + 24 + 26 + 28 + 30 + 32 + 34 + 36 + 38 + 40 = 421.
  • Если num = 2, тогда 2 больше следующие 20 четных чисел он 2 + 4 + 6 + 8 + 10 + 12 + 14 + 16 + 18 + 20 + 22 + 24 + 26 + 28 + 30 + 32 + 34 + 36 + 38 + 40 + 42 = 462.
4
ответ дан 24.11.2019, 12:49

Я это harГ - в таким образом. Складывая одного, но уменьшая nГєmero шагов в половину, меняя это j=numero+40 на это j=numero+20.

QuedarГ - В таким образом.

for(int i=numero, j=numero+20;i<=j;i++)
{
    total_par+=2*i;
}

if не deberГ, - чтобы существовать, так как он делает то же самое в двух случаях... А именно, если это пара, я повторяю, и если это не пара, tambiГ©n я повторяю, когда возможно говорить, повторяю, будь что будет.

Замечает: Я заканчиваюсь отчитываться, что if, sГ, - deberГ, - чтобы существовать, так как, если его истинным, int i=numero, но если его фальшивым, int i=numero+1.

Следующая lГ-nea...

for(int i=numero+1,j=numero+40;i<=j;i+2){

может быть исправленным следующего способа (шаг за шагом):

for(int i=numero+1,j=numero+40;i<=j;i+=2){
for(int i=numero+1,j=numero+40;i<=j;i+=2){
for(int i=numero+0,j=numero+39;i<=j;i+=2){
for(int i=numero+0,j=numero+40;i< j;i+=2){
for(int i=numero+0,j=numero+20;i< j;i+=1){

for(int i=numero,j=numero+20;i<j;i++){
2
ответ дан 24.11.2019, 12:49
  • 1
    Спасибо, я это понял и он я был и #250; til. Но я не понимаю, когда ты говоришь " itero". – MigherdCas 01.11.2016, 16:31
  • 2
    @MigHc повторять имеет в виду делать каждое из повторений циклом. – Francisco Romero 01.11.2016, 16:40
  • 3
    @Error404 хороший знать это – MigherdCas 01.11.2016, 16:48
  • 4
    @ArtEze из-за qu и # 233; ты складываешь i в total_par, если i не пара, так как он увеличивается 1 в 1? или дело в том, что я не обращаю внимание на что-то – Dev. Joel 01.11.2016, 18:02
  • 5
    @Dev. Джоэл Буен подробно описал, я не заметил ошибку... Быть должным и # 237; когда его быть total_par+=2*i. Уже edit и # 233;. – ArtEze 01.11.2016, 18:17

Хотя уже эта ответ...

private Integer obtenerSuma(Integer intNumero, Integer intCantidadASumar) {
    Boolean intSeed = false;
    Integer  intResultado = 0;

    intSeed = (intNumero % 2)?2:1;

    for(Integer intIndex = 0; intIndex < intCantidadASumar; intIndex + intSeed) {
        intResultado += intNumero;
    }

    return intResultado;
}
1
ответ дан 24.11.2019, 12:49