English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

سيناريوهات مختلفة تؤدي إلى NoSuchElementException في Java

الاستثناءات هي المشاكل التي تحدث أثناء تنفيذ البرنامج (أخطاء تشغيلية). عند حدوث استثناء، يُنهى البرنامج بشكل مفاجئ، ولا يتم تنفيذ الكود بعد السطر الذي تم فيه إطلاق الاستثناء. يتم تمثيل كل استثناء بفئة خاصة به.

استثناء NoSuchElement

هذه استثناءات تشغيلية، أي أنها تحدث أثناء التنفيذ.

إذا حاولت استخراج عنصر من عنصر فارغ أو استخدام طريقة الوصول إلى Enumeration، Iterator أو tokenizer (مثل next() أو nextElement()) لاستكشاف محتويات مجموعة، مصفوفة أو عنصر آخر، فإن محاولة الحصول على العنصر التالي بعد وصولك إلى نهاية العنصر (المجموعة، المصفوفة أو العنصر الآخر) ستجلب NoSuchElementException.

الساحة

طريقة nextElement() للتحفظ-Vector،HashTable وما إلى ذلك من مجموعات تحتوي على طريقة elements() تعود كائن Enumeration (واجهة) يحتوي على جميع العناصر في المجموعة.

باستخدام هذا الكائن، يمكنك استخدام طريقة nextElement() للحصول على العناصر واحدة تلو الأخرى.

إذا تم استدعاء هذه الطريقة على مجموعة فارغة أو عند الوصول إلى نهاية المجموعة، فإن NoSuchElementException سيتم إنشاؤه في وقت التشغيل.

مثال

import java.util.Enumeration;
import java.util.Vector;
public class EnumExample {
   public static void main(String args[]) {
      //إنشاء الفريق
      Vector<Integer> vec = new Vector<Integer>();
      //ملء الفريق
      vec.add(1254);
      vec.add(4587);
      //استخدام التعداد لاسترجاع العناصر
      Enumeration<Integer> en = vec.elements();
      System.out.println(en.nextElement());
      System.out.println(en.nextElement());
      //للبحث عن العنصر التالي بعد الوصول إلى النهاية
      System.out.println(en.nextElement());
   }
}

خطأ في التنفيذ

1254
4587
Exception in thread "main" java.util.NoSuchElementException: Vector Enumeration
   at java.util.Vector$1.nextElement(Unknown Source)
   at MyPackage.EnumExample.main(EnumExample.java:18)

طريقة nextElement() وnextToken() لـ StringTokenizer -يقبل كلاس StringTokenizer String وdelimiter كأحد أ参数ات بنائه، ويقوم بتقسيم String المحدد إلى عدة علامات عند كل ظهور للمعلمة المحددة.

هذه الطريقة nextToken() وnextElement() تعود التالي من مولد البطاقات في النص. إذا تم استدعاء هذه الطرق على كائنTokenizer فارغ أو عند استدعاء NoSuchElementException عند الوصول إلى النهاية، فإن NoSuchElementException سيتم إنشاؤه في وقت التشغيل.

مثال

import java.util.StringTokenizer;
إدراجُ java.util.StringTokenizer;
   public static void main(String args[]) {
      مجموعة StringTokenizerExample
      String str = "مرحبًا كيف أنت أنت";
      //مثال على إنشاء كائن StringTokenizer
      StringTokenizer tokenizer = new StringTokenizer(str, " ");
      //طباعة جميع التذاكر
      //طباعة جميع التذاكر
      //طباعة جميع التذاكر
      //طباعة جميع التذاكر
      System.out.println(tokenizer.nextToken());
      //للحصول على التوقيع التالي بعد الوصول إلى النهاية
      tokenizer.nextToken();
   }
}

خطأ في التنفيذ

tokenizer.nextElement();
مرحبًا
كيف
أنت
استثناء في thread "main" java.util.NoSuchElementException
   في java.util.StringTokenizer.nextToken (المصدر غير المعروف)
   في MyPackage.StringTokenizerExample في ملف StringTokenizerExample.java:16

طريقة next() في Iterator -يقدم Java كلاً من Iterator و ListIterator لاسترجاع عناصر عنصر المجموعة. يعود طريقة next() في Iterator إلى العنصر التالي في المجموعة

إذا تم استدعاء هذه الطرق على مجموعة فارغة أو عند التنفيذ النهائي، فإن NoSuchElementException سيتم إنشاؤه

بالمثل، إذا تم استدعاء هذه الطريقة على عنصر فارغ أو في موقع إعلانه، فإن طريقة previous() في ListIterator ستعود إلى العنصر السابق في المجموعة، وتسبب في NoSuchElementException عند التنفيذ

مثال

إدراجُ java.util.ArrayList;
إدراجُ java.util.Iterator;
public class NextElementExample{
   public static void main(String args[]) {
      // إنشاء ArrayList
      ArrayList<String> list = new ArrayList<String>();
      // تعبئة ArrayList
      list.add("تفاح");
      list.add("مانجو");
      list.add("تفاحي");
      // الحصول على Iterator للArrayList
      Iterator it = list.iterator();
      System.out.println(it.next());
      System.out.println(it.next());
      System.out.println(it.next());
      //للبحث عن العنصر التالي بعد الوصول إلى النهاية
      it.next();
   }
}

خطأ في التنفيذ

التفاح
المانجو
التفاحي
استثناء في thread "main" java.util.NoSuchElementException
   في java.util.ArrayList$Itr في next (المصدر غير المعروف)
   في MyPackage.NextElementExample في ملف NextElementExample.java:19

مثال (طريقة previous())

إدراجُ java.util.ArrayList;
import java.util.ListIterator;
public class NextElementExample{
   public static void main(String args[]) {
      // إنشاء ArrayList
      ArrayList<String> list = new ArrayList<String>();
      // تعبئة ArrayList
      list.add("تفاح");
      list.add("مانجو");
      list.add("تفاحي");
      // الحصول على Iterator للArrayList
      ListIterator<String> it = list.listIterator();
      it.next();
      it.next();
      it.next();
      System.out.println(it.previous());
      System.out.println(it.previous());
      System.out.println(it.previous());
      System.out.println(it.previous());
   }
}

نتيجة الخروج

التفاحي
المانجو
التفاح
استثناء في thread "main" java.util.NoSuchElementException
   في java.util.ArrayList$ListItr.previous(Unknown Source)
   في MyPackage.NextElementExample.main(NextElementExample.java:22)
من المحتمل أن تعجبك