الدالة nextLine الموجودة في الكلاس Scanner لا تعمل!
لقد ظهر لي خطأ في الدالة nextLine()
الموجودة في الكلاس Scanner
الخاص بجافا عندما كنت حل احدى التحديات على hackerRank.
الصورة التالية هي المطلوب بالضبط:
الصورة التالية توضح النتيجة المتوقعة:
شرح المطلوب
المطلوب هو أن يدخل المستخدم أولا عدداً صحيحاً نوعه int
ثم يتم حفظه في متغير إسمه i
، ثم يدخل عدد به فاصلة نوعه double
و يتم حفظه في متغير إسمه d
، و في النهاية يدخل نص يتم حفظه في متغير إسمه s
و بعدها يتم زيادة قيمة i
بأعلى قيمة ممكنة من d
وطبعا تحويلها إلى int
ومن ثم عرضه و أيضاً ضرب قيمة d
في 2 و هكذا و السترينج واضح أمرها.
الحل الذي فعلته:
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner input = new Scanner(System.in); int i = input.nextInt(); double d = input.nextDouble(); input.nextLine(); String s = input.nextLine(); System.out.println((int)(i+d)); System.out.println(d*2); System.out.println("HackerRank "+s); } }
المشكلة في الكود
المشكلة أساساً ظهرت كالآتي، عندما أقوم بإدخل المتغير الأول و أضغط enter ينتقل للمتغير الثاني و لكن عندما أدخل قيمة المتغير الثاني واضغط enter يبدأ مباشرة بطباعة المتغيرين و ينتهي الـ input. ما الحل و لماذا يحدث هذا؟