سؤال

صري عن لغتي الإنجليزية :)
أنا جديد في برمجة Java ولدي مشكلة مع الماسح الضوئي. أحتاج إلى قراءة INT، وأظهر بعض الأشياء ثم قراءة سلسلة لذلك أنا استخدم sc.xtint ()؛ تظهر بلدي الاشياء قائمة العرض()؛ ثم حاول قراءة سلسلة palabra = sc.nextline ()؛

أخبرني بعضنا أنني بحاجة إلى استخدام SC.Nextline ()؛ بعد sc.xtint ()؛ لكنني لا أفهم لماذا يجب عليك القيام بذلك :(

هنا هو رمزي:

public static void main(String[] args) {
    // TODO code application logic here
    Scanner sc = new Scanner(System.in);
    int respuesta = 1;

    showMenu();
    respuesta = sc.nextInt();
    sc.nextLine(); //Why is this line necessary for second scan to work?

    switch (respuesta){
        case 1:
            System.out.println("=== Palindromo ===");
            String palabra = sc.nextLine();
            if (esPalindromo(palabra) == true)
                System.out.println("Es Palindromo");
            else
                System.out.println("No es Palindromo");
        break;
    }


}

تاي كثيرا لوقتك ومساعدتك: د

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

المحلول

nextInt() يقرأ فقط حتى يتم العثور على int ثم يتوقف.

عليك أن تفعل nextLine() نظرا لأن دفق الإدخال لا يزال لديه حرف جديد وربما بيانات غير كثيرة غير دولية على الخط. دعا nextLine() يقرأ بأي بيانات يتم تركها، بما في ذلك إدخال المستخدم المضغوط بين دخول Int ويدخل سلسلة.

نصائح أخرى

عند إدخال قيمة (سواء String, int, double, ، إلخ ...) وضرب "أدخل،" شخصية خط جديد (ويعرف أيضا باسم '\n') سيتم إلحاقها حتى نهاية المدخلات الخاصة بك. لذلك، إذا كنت تدخل int، sc.nextInt() سوف تقرأ فقط عدد صحيح دخل وترك '\n' وراء في المخزن المؤقت. لذلك، طريقة إصلاح هذا هو إضافة sc.nextLine() سوف يقرأ ذلك بقايا ورميها بعيدا. هذا هو السبب في أنك تحتاج إلى أن يكون لديك سطر واحد من التعليمات البرمجية في البرنامج الخاص بك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top