مجموع ارقام عدد در جاوا
یکی از مسائل ابتدایی دنیای برنامه نویسی زمانی که برنامه نویسی با زبان برنامه نویسی جاوا را شروع میکنید مجموع ارقام اعداد است. در این نوشته به حل این مسئله با زبان برنامه نویسی جاوا میپردازیم.
پیشنهاد نویسنده: محاسبه مجموع ارقام عدد با زبان C#
مجموع ارقام عدد در جاوا
سناریوی کار به این شکل است که مثلا عددی مثل 123 وارد شود و خروجی جمع ارقام موجود در این عدد سه رقمی است.
کد برنامه
import java.util.Scanner;
public class Main {
static Scanner scanner = new Scanner(System.in);
public static void main(String[] args) {
int num;
int sum = 0;
int r;
num = scanner.nextInt();
while (num != 0)
{
r = num % 10;
num = num / 10;
sum = sum + r;
}
System.out.println("Result : " + sum);
}
}
توضیحات کد بالا:
- این کد به زبان برنامه نویسی جاوا نوشته شده است.
- در کد بالا ابتدا با کمک کتابخانهی Scanner یک عدد از کاربر دریافت میشود.
- در بخش بعدی یک حلقه را تا زمانی که رقمهای عدد باقیمانده ادامه میدهیم؛ هر بار عدد را تقسیم بر 10 میکنیم و از آن عدد جدیدی میسازیم و باقیماندهی هر تقسیم را نیز با هر دور از حلقه جمع میکنیم.
- در بخش نهایی هم این عدد را که با کمک متغیر sum نگهداری میشود نمایش میدهیم.
اگر علاقه به بررسی تمرینهای بیشتر زبان برنامه نویسی جاوا دارید در بخش نظرات این نوشته برای ما بنویسید.
برای امتیاز به این نوشته کلیک کنید!
[کل: 5 میانگین: 4.8]



















اگر عدد ورودی از نوع long باشه، باید تغییری توی کد بدیم؟
اگر عدد ورودی از نوع `long` باشد، نیازی به تغییر در کد نیست، زیرا عملگرهای `%` و `/` برای `long` نیز به درستی کار میکنند.
آیا میشه این مسئله رو بدون استفاده از عملگر تقسیم و باقیمانده حل کرد؟
بله، با تبدیل عدد به رشته و پیمایش کاراکترها میتوان این مسئله را بدون استفاده از عملگرهای تقسیم و باقیمانده حل کرد.
آیا استفاده از بازگشت یا Recursion برای این مسئله بهتر از حلقه هست یا کندتر میشه؟
هر دو روش حلقه و بازگشت برای این مسئله قابل استفاده هستند و تفاوت چشمگیری در سرعت ندارند، اما حلقه معمولاً برای مبتدیان قابل فهمتر است.
برای اعداد خیلی بزرگ، این روش کارایی مناسبی داره یا باید از BigInteger استفاده کنیم؟
برای اعداد خیلی بزرگ، استفاده از `BigInteger` راه حل مناسبتری خواهد بود تا از بروز خطاهای احتمالی جلوگیری شود.
آیا میشه همین مسئله رو با استفاده از Stream API در جاوا ۸ بهینهتر نوشت؟
بله حتماً. با استفاده از Stream API در جاوا ۸ میتوان این مسئله را به شکلی کوتاهتر و خواناتر پیادهسازی کرد.
در مصاحبه های برنامه نویسی همچنین سوالی پرسیده میشه؟
بله، این سوال به عنوان یک سوال مقدماتی در مصاحبههای برنامهنویسی جاوا ممکن است مطرح شود تا توانایی شما در درک مفاهیم پایه را بسنجند.
آیا میشه این مسئله رو با استفاده از استریمها (Java Streams) هم پیادهسازی کرد؟
بله، کمالی عزیز، این مسئله با استفاده از Java Streams هم قابل حل است و میتوان راهحلهای کوتاهتر و خواناتری ارائه داد.
آیا این الگوریتم روی اعداد اعشاری هم قابل استفاده هست؟
با سلام. خیر، این الگوریتم برای اعداد صحیح طراحی شده است و برای اعداد اعشاری به درستی کار نمیکند. برای اعداد اعشاری، باید بخش صحیح و اعشاری را جداگانه پردازش کنید.
آیا میشه با استفاده از String و تبدیل کاراکترها هم مجموع ارقام رو حساب کرد؟
بله، آقای بهرامی، با استفاده از String و تبدیل کاراکترها به اعداد هم میتوان مجموع ارقام را محاسبه کرد. این روش نیز یک راهحل معتبر برای این مسئله است.
آیا میشه همین مسئله رو با استفاده از بازگشت (recursion) هم حل کرد؟
بله، آقای خسروی، میتوان این مسئله را با استفاده از بازگشت (recursion) نیز حل کرد. این روش میتواند یک جایگزین جالب برای حلقه while در این مسئله باشد.