Domanda

C'è qualcosa che posso usare per vedere se un numero inizia con la stessa cifra di un altro? Ex. 5643 e 5377 iniziano entrambi con cinque.

C'è un modo per farlo con i numeri o devono essere stringhe? (StartsWith?)

È stato utile?

Soluzione

Ich n1 e n2 sono i tuoi numeri:

return (n1.toString().charAt(0) == n2.toString().charAt(0));

Dovrai usare Integer non int, poiché int non ha un metodo .toString ().

Se n1 è un int è possibile utilizzare new Integer (n1) .toString ().

O ancora meglio (suggerito da Bombe):

String.valueOf(n1).charAt(0) == String.valueOf(n2).charAt(0)

Altri suggerimenti

Ripeti la divisione per dieci fino a quando l'intera divisione è inferiore a dieci, quindi quel numero è il primo e puoi confrontare i numeri.

È possibile calcolare la prima cifra:

public int getFirstDigit(int number) {
    while (number >= 10) {
        number /= 10;
    }
    return number;
}

(Funzionerà solo con numeri positivi.)

Ma poi potresti semplicemente confrontare il primo carattere delle rappresentazioni di String. Il confronto delle stringhe potrebbe essere più lento ma poiché il problema è & # 8220; ottenere il primo carattere della rappresentazione delle stringhe & # 8221; potrebbe essere solo la soluzione appropriata. :)

L'approccio più diretto (che consente valori di lunghezza diversi) sarebbe probabilmente proprio come hai detto, convertirli entrambi in stringhe.

int x = 5643;
int y = 5377;
String sx, sy;

sx = "" + x;        // Converts int 5643 to String "5643"
sy = "" + y;

boolean match = (sx.charAt(0) == sy.charAt(0));
  public static byte firstDigit(int number) {
    while (true) {
      int temp = number / 10;

      if (temp == 0) {
        return (byte) Math.abs(number);
      }

      number = temp;
    }

(int) (a / 10 ** (int) Math.log10 (a))

Probabilmente meno efficiente della soluzione di stringa, ma nessun loop e ci mantiene nel "quoter numerico" reame.

(Ricorda sempre che quando parli del numero di cifre in un numero, log10 è tuo amico)

Inoltre non funzionerà con numeri negativi, prendi un valore assoluto di un primo.

Per ints, int n1 e int n2;

return ("" + n1).charAt(0) == ("" + n2).charAt(0);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top