English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ما هو سبب NoSuchElementException وكيفية إصلاحه في جافا؟
الاستثناءات هي مشاكل تحدث أثناء تنفيذ البرنامج (أخطاء في الوقت الحقيقي). عند حدوث الاستثناء، يتم إنهاء البرنامج بشكل مفاجئ، وسيتم تنفيذ الأوامر بعد السطر الذي تم إنشاء الاستثناء. كل استثناء تمثلها فئة معينة.
هذه استثناءات في الوقت الحقيقي، أي أنها تحدث أثناء التنفيذ.
إذا حاولت الحصول على عنصر من كائن فارغ أو استخدام Enumeration، Iterator أو tokenizer لاستدعاء طرق الوصول (مثل next() أو nextElement()) ل contenido مجموعة، مصفوفة أو كائن آخر، فإن محاولة الحصول على العنصر التالي بعد وصولك إلى نهاية الكائن (مجموعة، مصفوفة أو كائن آخر) ستجلب NoSuchElementException.
على سبيل المثال،
إذا تم استدعاء طريقة nextElement() لمحلل في كائن محلي فارغ، أو إذا كانت المواقع الحالية في نهاية محلل، فإن NoSuchElementException يتم إنشاؤه في الوقت الحقيقي.
إذا تم استخدام طريقة nextElement() و nextToken() لمحلل السلاسل في كائن StringTokenizer فارغ، أو إذا كانت المواقع الحالية في نهاية StringTokenizer، فإن NoSuchElementException يتم إنشاؤه في الوقت الحقيقي.
إذا تم استدعاء طريقة next() لمحلل أو ListIterator في محلل / ListIterator فارغ، أو إذا كانت المواقع الحالية في نهاية المحلل، فإنه يتم إنشاء NoSuchElementException في الوقت الحقيقي.
بالمثل، إذا تم استدعاء طريقة previous() من قبل فئة ListIterator الفارغة، أو إذا كان الموضع الحالي هو بداية ListIterator، فإن NoSuchElementException سيُحدث أثناء التشغيل.
استيراد java.util.StringTokenizer; public class StringTokenizerExample{ public static void main(String args[]) { String str = "مرحبًا كيف كنت أنت"; //إنشاء StringTokenizer StringTokenizer tokenizer = new StringTokenizer(str, " "); //طباعة جميع الأجزاء System.out.println(tokenizer.nextToken()); System.out.println(tokenizer.nextToken()); System.out.println(tokenizer.nextToken()); System.out.println(tokenizer.nextToken()); //Getting the next token after reaching the end tokenizer.nextToken(); tokenizer.nextElement(); } }
مرحبًا كيف كنت أنت Exception in thread "main" java.util.NoSuchElementException at java.util.StringTokenizer.nextToken(Unknown Source) at MyPackage.StringTokenizerExample.main(StringTokenizerExample.java:16)
تتضمن كل فئة تقوم بتعريف طريقة تؤدي إلى NoSuchElementException عادةً طريقة لتحقق من أن العنصر يحتوي على المزيد من العناصر (مثل المجموعات، وإنشاء التokens، إلخ).
على سبيل المثال -
تحتوي فئة Enumeration على طريقة hasMoreElements()، إذا كان هناك المزيد من العناصر بعد موقع التح iterator في الموضع الحالي، فإن هذه الطريقة تعود بالصحيح (إلا إذا كانت تعود بالخطأ).
تحتوي فئة StringTokenizer على طرق hasMoreTokens() و hasMoreElements()، إذا كان هناك المزيد من العناصر بعد موقع التح iterator في الموضع الحالي، فإن هذه الطريقة تعود بالصحيح (إلا إذا كانت تعود بالخطأ).
يحتوي فئة Iterator على طريقة hasNext()، إذا كان هناك المزيد من العناصر بجانب موقع التح迭代 في الموضع الحالي، فإن هذه الطريقة تعود بالصحيح (إلا إذا كانت تعود بالخطأ).
يحتوي فئة ListIterator على طريقة hasPrevious()، إذا كان هناك المزيد من العناصر قبل موقع التح迭代 في الموضع الحالي، فإن هذه الطريقة تعود بالصحيح (إلا إذا كانت تعود بالخطأ).
في دائرة while، يتم استخدام هذه الطرق لتحقق من أن العنصر المطلوب يحتوي على المزيد من العناصر، ويتم الطباعة/الوصول إلى العنصر فقط إذا كان الشرط صحيحًا. عند عدم وجود عناصر في العنصر أو عند الوصول إلى النهاية، يمكن منع استخدام طرق الوصول إلى العنصر.
قائمة المفترضين للوصول إلى العناصر التالية()
استيراد java.util.Enumeration; استيراد java.util.Vector; public class EnumExample { public static void main(String args[]) { //إنشاء Vector Vector<Integer> vec = new Vector<Integer>(); //ملء الفريق vec.add(1254); vec.add(4587); //استرجاع العناصر باستخدام التعداد Enumeration<Integer> en = vec.elements(); while(en.hasMoreElements()) { System.out.println(en.nextElement()); } } }
نتائج الإخراج
1254 4587
قائمة المفترضين للوصول إلى المزيد من الأجزاء()-
استيراد java.util.StringTokenizer; public class StringTokenizerExample{ public static void main(String args[]) { String str = "مرحبًا كيف كنت أنت"; //إنشاء StringTokenizer StringTokenizer tokenizer = new StringTokenizer(str, " "); //طباعة جميع الأجزاء while(tokenizer.hasMoreTokens()) { System.out.println(tokenizer.nextToken()); } } }
نتائج الإخراج
مرحبًا كيف كنت أنت
قائمة المفترضين للوصول إلى التالي()-
import java.util.ArrayList; استيراد java.util.Iterator; public class NextElementExample{ public static void main(String args[]) { //Instantiating an ArrayList object ArrayList<String> list = new ArrayList<String>(); //populating the ArrayList list.add("apples"); list.add("mangoes"); list.add("oranges"); //Getting the Iterator object of the ArrayList Iterator it = list.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } }
نتائج الإخراج
apples mangoes oranges
قائمة المفترضين للوصول إلى السابق()-
import java.util.ArrayList; import java.util.ListIterator; public class NextElementExample{ public static void main(String args[]) { //Instantiating an ArrayList object ArrayList<String> list = new ArrayList<String>(); //populating the ArrayList list.add("apples"); list.add("mangoes"); list.add("oranges"); //Getting the Iterator object of the ArrayList ListIterator<String> it = list.listIterator(); while(it.hasNext()) { it.next(); } while(it.hasPrevious()) { System.out.println(it.previous()); } } }
نتائج الإخراج
oranges mangoes apples