سؤال

هل هناك شيء يمكنني استخدامها لمعرفة ما إذا كان يبدأ عددا بنفس الرقم وذاك؟ السابق. 5643 و5377 كلا تبدأ مع خمسة.

هل هناك طريقة للقيام بذلك مع أرقام أو أنها لا يجب أن تكون السلاسل؟ (startsWith؟)

هل كانت مفيدة؟

المحلول

وإيتش n1 و N2 أعداد الخاص بك:

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

وسيكون لديك لاستخدام عدد صحيح لا كثافة العمليات، لأن الباحث لا يوجد لديه طريقة .toString ().

إذا N1 هو عدد صحيح هل يمكن استخدام عدد صحيح جديد (N1) .toString ().

وأو حتى أفضل (الذي اقترحه مقببة):

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

نصائح أخرى

ولعنة قسمة عشرة حتى تقسيم كله هو أقل من عشرة، ثم هذا العدد هو أول واحد ويمكنك مقارنة الأرقام.

هل يمكن حساب الرقم الأول:

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;
    }

(الباحث) (أ / 10 ** (الباحث) Math.log10 (أ))

وربما أقل كفاءة من حل سلسلة، ولكن لا حلقات ويبقي لنا في عالم "الرقمي".

و(تذكر دائما أنك عندما نتحدث عن عدد من الأرقام في عدد، LOG10 هو صديقك)

وأيضا لن تعمل من أجل السلبية أرقام تأخذ القيمة المطلقة لأول مرة.

ل[إينتس]، كثافة العمليات N1 و N2 كثافة العمليات؛

return ("" + n1).charAt(0) == ("" + n2).charAt(0);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top