<RESOLVIDO>Sucessor Par de um número

Boa tarde, amigos! Tudo bem?

Gente… seguinte: estou precisando de ajuda com o meu código. O exercício é basicamente entrar com uma sequência de números e mostrá-los ao lado do seu sucessor par. (o 0 não pode ser contabilizado para o sucessor par)

O meu código em alguns itens está correto, porém em alguns ele começa a dar erro. Aqui está o código:

System.out.println(“Digite uma sequência de números:”);

    int sucessor1=numero1+1;
   

    //numero 1

     if(numero1==-1){
            System.out.print(numero1);
            System.out.print(" " + (sucessor1+2));
          
        }
     else if(numero1==-2){
            System.out.print(numero1);
            System.out.print(" " + (sucessor1+3));
        
     }
     else if(sucessor1%2==0){
       
        System.out.print(numero1);
        System.out.print(" " + sucessor1);
     
    } 
     else if (sucessor1%2!=0){
        System.out.print(numero1);
        System.out.print(" " + (sucessor1+1));


    }

  //Numero 2
    System.out.println("\nOutra linha, porra");
  
  int numero2 = teclado.nextInt();
  int sucessor2=numero2+1;  
  
    if(numero2==-1){
            System.out.print(numero2);
            System.out.print(" " + (sucessor2+2));
           
        }
    else if(numero2==-2){
            System.out.print(numero2);
            System.out.print(" " + (sucessor2+3));

     }
    else if(sucessor2%2==0){
       
        System.out.print(numero2);
        System.out.print(" " + sucessor2);
       
        
    } 
     else if (sucessor2%2!=0){
        System.out.print(numero1);
        System.out.print(" " + (sucessor2+1));


    }

Quando eu coloco
Numero1: -4 no primeiro número ele imprime:
-4 -2 (o que está correto)

Porém, quando eu coloco:
Numero 1: -5
Impressão -5 -4(correto)

Numero 2: -4
Impressão: -5 -2(???)

Alguém sabe me dizer o que está errado no código?
Obrigado, pessoal!

O erro está no seu último else if, onde ao invés de coloar:

else if (sucessor2%2!=0){
    System.out.print(numero2); // << TEM QUE COLOCAR NUMERO2
    System.out.print(" " + (sucessor2+1));
}

Vc colocou:

else if (sucessor2%2!=0){
    System.out.print(numero1);
    System.out.print(" " + (sucessor2+1));
}

Além disso, gostaria de dar algumas sugestões.

Seu código pode ser melhorado eliminando estes else if e colocando apenas 2 if no lugar. Veja:

import java.util.Scanner;

public class Program {
    public static void main(String... args){
        System.out.println("Digite uma sequência de números:");

        Scanner teclado = new Scanner(System.in);
        int numero1     = teclado.nextInt();
        int sucessor1   = numero1 + 1;

        if (sucessor1 % 2 != 0) sucessor1 += 1;
        if (sucessor1 == 0)     sucessor1 += 2;

        System.out.println( numero1 + " " + sucessor1 );

        System.out.println("Outra linha, porra");

        int numero2   = teclado.nextInt();
        int sucessor2 = numero2 + 1;

        if (sucessor2 % 2 != 0) sucessor2 += 1;
        if (sucessor2 == 0)     sucessor2 += 2;

        System.out.println( numero2 + " " + sucessor2 );
    }
}

Ou poderiámos ir além e usar um while!!!

import java.util.Scanner;

public class Program {
    static void printSucessor(int number) {
        int successor = number;
        while (++successor % 2 != 0 || successor == 0);
        System.out.printf("%d %d\n", number, successor);
    }

    public static void main(String... args){
        Scanner scan  = new Scanner(System.in);

        System.out.print("Digite um número: ");
        printSucessor( scan.nextInt() );

        System.out.print("Digite um número: ");
        printSucessor( scan.nextInt() );
    }
}

Não sei se fiz testes o suficiente, mas isso pode lhe dar uma idéia do que melhorar.

1 curtida
static long sucessorPar(long x) {
  return x + (2 - Math.abs(x % 2));
}
2 curtidas

Consegui!

Muito obrigado pelas dicas, pessoal!