Java >> Programma Java >  >> Java

Programma Java per trovare il numero più vicino a un dato numero senza una determinata cifra

Programma Java per trovare il numero più vicino a un dato numero senza una determinata cifra :

  1. Questo programma troverà il più vicino numero a un utente numero fornito che non deve contenere una cifra di input dell'utente.
  2. Il numero del risultato può essere minore di o maggiore di il numero indicato .
  3. ad es. Numero più vicino maggiore di 123 senza contenere 3 è 124 e più piccolo di 123 senza contenere 3 è 122 .
  4. Utilizzo dello Scanner classe, otterremo il numero , cifra e maggiore/minore di informazioni dall'utente.
  5. La cifra viene scansionata come un carattere .
  6. Utilizzo di un ciclo for , analizzeremo tutte le cifre una per una .
  7. Per verificare se il carattere è nella cifra , stiamo usando Integer.toString(no).indexOf(digit) . Se la cifra non è nel numero, restituirà -1 .
  8. Scansiona uno per uno e testa ogni numero.

Programma :

import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int no;
        Character digit;
        Character c;

        System.out.println("Enter a number : ");
        no = sc.nextInt();

        System.out.println("Enter the digit  : ");
        digit = sc.next().charAt(0);

        System.out.println("Do you want to look for a number that is larger or smaller than " + no + " ? Please use " +
                "\'g\' for greater than or" +
                "\'l\' for less than ");

        c = sc.next().charAt(0);


        if (c == 'g') {
            System.out.println("Closest number : " + findClosestNumber(no, digit, true));
        } else if (c == 'l') {
            System.out.println("Closest number : " + findClosestNumber(no, digit, false));
        } else {
            System.out.println("Please provide a valid answer !! ");
        }


    }


    static int findClosestNumber(int no, Character digit, boolean greaterThan) {

        if (greaterThan) {
            for (int i = no + 1; i > no; i++) {
                if (isValidNumber(i, digit)) {
                    return i;
                }
            }
        } else {

            for (int i = no - 1; i > 0; i--) {
                if (isValidNumber(i, digit)) {
                    return i;
                }
            }
        }
        return -1;
    }

    static boolean isValidNumber(int no, Character digit) {
        return Integer.toString(no).indexOf(digit) == -1;
    }

}

Esempi:

Enter a number :
133
Enter the digit  :
1
Do you want to look for a number that is larger or smaller than 133 ? Please use 'g' for greater than or'l' for less than
l
Closest number : 99

Enter a number :
23567
Enter the digit  :
4
Do you want to look for a number that is larger or smaller than 23567 ? Please use 'g' for greater than or'l' for less than
g
Closest number : 23568

Etichetta Java