ورود

View Full Version : تبدیل استک به استرینگ



Neroon
چهارشنبه 31 تیر 1394, 17:06 عصر
سلام دوستان میخوام یه پشته ـرو (Stack) رو به یه رشته تبدیل کنم. اما مشکلی که وجود داره اینه که وقتی از متد toString استفاده میکنم پشته به صورت [0, +, 1] تبدیل به رشته میشه و (با احتساب جای خالی) 9 کاراکتر میشه در حال که من میخوام به صورت 0+1 (سه کاراکتر) ذخیره بشه، آیا متد یا راه حلی برای اینکار وجود داره ؟

محمد فدوی
چهارشنبه 31 تیر 1394, 20:32 عصر
سلام.
سؤالت واضح نیست و بهتر می‌شد اگه بیشتر توضیح می‌دادی در موردش... اینجور که من فهمیدم یه پشته از کاراکتر داری و می‌خوای به رشته تبدیلش کنی.
راه حل ساده‌ست.

Stack<Character> charsStack = new <Character>Stack();
charsStack.addAll(Arrays.asList('1', '+', '0'));

StringBuilder sb = new StringBuilder();
for(char ch : charsStack) {
sb.append(ch);
}

String stackString = sb.toString();
System.out.println(stackString);


اگه جاوا ۸ داری می‌تونی اینجوری هم بنویسی:

Stack<Character> charsStack = new Stack();
charsStack.addAll(Arrays.asList('1', '+', '0'));

String stackString = charsStack.stream()
.map(String::valueOf)
.collect(Collectors.joining());

System.out.println(stackString);


موفق باشی.

Neroon
چهارشنبه 31 تیر 1394, 21:57 عصر
for(char ch : charsStack)


ممنون دوست عزیز، توضیحاتم مبهم بود ولی شما درست متوجه شدید، کاری که گفتید رو انجام دادم اما تو این خط ارور typemismatch میده و نمیتونه شیء رو به کاراکتر تبدیل کنه.
ویرایش : این مشکل حل شد.
مشکل دیگه ای که هست من ساختار این نوع حلقه رو بلد نیستم و اینکه وقتی با این حلقه پشته تبدیل به کاراکتر میشه آخرین کاراکتر داخل پشته وارد رشته نمیشه

محمد فدوی
چهارشنبه 31 تیر 1394, 22:12 عصر
در مورد ساختار حلقه‌ی for-each این (http://stackoverflow.com/questions/85190/how-does-the-java-for-each-loop-work) رو بخون.
من مشکلی که شما می‌گی رو ندیدم... نمونه کد بذار ببینیم مشکلش چیه.

Neroon
چهارشنبه 31 تیر 1394, 22:18 عصر
ممنون از لطفتون مشکل حل شد:قلب: