문제

숫자가 다른 숫자와 같은 숫자로 시작하는지 확인하는 데 사용할 수있는 것이 있습니까? 전. 5643과 5377은 둘 다 5 개로 시작합니다.

숫자로 이것을 할 수있는 방법이 있습니까? 아니면 문자열이어야합니까? (시작?)

도움이 되었습니까?

해결책

ICH N1과 N2는 귀하의 숫자입니다.

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

int에는 .tostring () 메소드가 없으므로 int가 아닌 정수를 사용해야합니다.

n1이 int 인 경우 새 정수 (n1) .tostring ()을 사용할 수 있습니다.

또는 더 나은 (Bombe가 제안) :

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

다른 팁

전체 부문이 10 미만이 될 때까지 10으로 나누고, 그 숫자는 첫 번째 숫자이며 숫자를 비교할 수 있습니다.

첫 번째 숫자를 계산할 수 있습니다.

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

(이것은 양수에 대해서만 작동합니다.)

그러나 다시 문자열 표현의 첫 번째 문자를 비교할 수 있습니다. 문자열 비교는 느려질 수 있지만 문제가 "문자열 표현의 첫 번째 문자를 얻는 것"이므로 적절한 솔루션 일 수 있습니다. :)

가장 간단한 접근 방식 (다른 길이 값을 허용)은 아마도 당신이 말했듯이 둘 다 문자열로 변환 할 것입니다.

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))

문자열 솔루션보다 덜 효율적이지만 루핑은 없으며 "숫자"영역에 우리를 유지합니다.

(항상 숫자의 숫자 수에 대해 이야기 할 때 Log10은 친구입니다)

또한 마이너스 숫자에 대해서는 작동하지 않습니다.

ints, int n1 및 int n2;

return ("" + n1).charAt(0) == ("" + n2).charAt(0);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top