قراءة الأعداد والأسطر
nextInt وnextLine ومشكلاتهما
قراءة الأعداد والأسطر درس مجاني في Java Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Java Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Java Academy 4 دروس في المجموع.
قراءة الأرقام حسب نوعها
يمكن لـ Scanner قراءة الأرقام مباشرة باستخدام أساليب مثل nextInt وnextDouble. وتحول هذه الأساليب الرمز التالي إلى النوع البدائي المطابق.
قراءة عدد صحيح
تقرأ nextInt() الرمز التالي وتُعيده على هيئة int. نستخدم هنا سلسلة نصية ثابتة كي يعمل المثال من دون كتابة.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("25");
int age = scanner.nextInt();
System.out.println(age + 1);
scanner.close();
}
}قراءة عدد عشري
تقرأ nextDouble() قيمة فاصلة عائمة. ويمكنكم بعد ذلك استخدامها في العمليات الحسابية.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("3.5");
double radius = scanner.nextDouble();
System.out.println(radius * 2);
scanner.close();
}
}قراءة عدة أرقام
تقرأ عمليات القراءة الرقمية المتعددة الرموز واحدًا تلو الآخر، وتتخطى المسافات البيضاء الفاصلة بينها.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("10 20 30");
int a = scanner.nextInt();
int b = scanner.nextInt();
int c = scanner.nextInt();
System.out.println(a + b + c);
scanner.close();
}
}الجمع حتى الانتهاء
اجمعوا بين hasNextInt() وnextInt() لقراءة عدد غير معروف من الأرقام.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("5 15 25 35");
int total = 0;
while (scanner.hasNextInt()) {
total += scanner.nextInt();
}
System.out.println(total);
scanner.close();
}
}المشكلة الشهيرة في nextLine
إليكم المشكلة التقليدية: تقرأ nextInt() الرقم، لكنها تترك محرف السطر الجديد في المخزن المؤقت. ثم تقرأ nextLine() التالية ذلك السطر الفارغ المتبقي، لا النص الذي كنتم تتوقعونه.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42\nHello World");
int n = scanner.nextInt();
String line = scanner.nextLine();
System.out.println("Number: " + n);
System.out.println("Line: [" + line + "]");
scanner.close();
}
}إصلاح المشكلة الشائعة
يتمثل الإصلاح في استدعاء nextLine() إضافية بعد nextInt() لاستهلاك محرف السطر الجديد المتبقي قبل قراءة إدخال سطر فعلي.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("42\nHello World");
int n = scanner.nextInt();
scanner.nextLine();
String line = scanner.nextLine();
System.out.println("Number: " + n);
System.out.println("Line: [" + line + "]");
scanner.close();
}
}قراءة القيم الطويلة والمنطقية
يوفر Scanner أيضًا الدالتين nextLong وnextBoolean وغيرهما. تقرأ كل دالة رمزًا من النوع المطابق.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("9000000000 true");
long big = scanner.nextLong();
boolean flag = scanner.nextBoolean();
System.out.println(big);
System.out.println(flag);
scanner.close();
}
}الأنواع غير المتطابقة ترمي استثناءً
إذا لم يكن الرمز التالي رقمًا صالحًا، فإن nextInt ترمي استثناءً من النوع InputMismatchException. استخدم hasNextInt للتحقق أولًا عندما لا تكون متأكدًا.
import java.util.InputMismatchException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("abc");
try {
scanner.nextInt();
} catch (InputMismatchException e) {
System.out.println("Not an integer!");
}
scanner.close();
}
}قراءة رقمية آمنة
يقرأ النمط المتين فقط عندما يكون النوع الصحيح متاحًا، وإلا فإنه يستهلك الرمز غير الصحيح ويتجاهله.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner("x 7 y 9");
int sum = 0;
while (scanner.hasNext()) {
if (scanner.hasNextInt()) {
sum += scanner.nextInt();
} else {
scanner.next();
}
}
System.out.println(sum);
scanner.close();
}
}تذكيرات أساسية
استخدم nextInt وnextDouble لقراءة الأرقام، واستخدم مجموعة hasNext للتحقق، وتذكّر استهلاك محرف السطر الجديد المتبقي قبل الانتقال إلى nextLine.
تحقق سريع
اختبر معرفتك بقراءة الأرقام والأسطر.
مراجعة
لقد تعلمت قراءة الأرقام والأسطر:
- تقرأ
nextIntوnextDoubleوnextLongأرقامًا من أنواع محددة - استخدم حلقة مع
hasNextIntعندما يكون عدد القيم غير معروف - مشكلة محرف السطر الجديد: استدعِ
nextLineإضافية بعدnextInt - ترمي الرموز غير الصحيحة الاستثناء
InputMismatchException - تحقق من عمليات القراءة باستخدام مجموعة
hasNextلمزيد من الأمان
الأسئلة الشائعة
هل درس «قراءة الأعداد والأسطر» مجاني؟
نعم — نص درس «قراءة الأعداد والأسطر» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Java Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Java Academy 4 دروس في المجموع.
ماذا ستتعلم في «قراءة الأعداد والأسطر»؟
nextInt وnextLine ومشكلاتهما تتمرن على Java Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Java Academy؟
لا تُشترط خبرة سابقة. Java Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «قراءة الأعداد والأسطر»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Java Academy هذا؟
نعم. كل درس في Java Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- قراءة الإدخال باستخدام Scanner
- قراءة الأعداد والأسطر
- التحقّق من إدخال المستخدم
- بديل BufferedReader