문제
숫자가 다른 숫자와 같은 숫자로 시작하는지 확인하는 데 사용할 수있는 것이 있습니까? 전. 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);
제휴하지 않습니다 StackOverflow