لقد ظهر لي خطأ في الدالة 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. ما الحل و لماذا يحدث هذا؟