Jak naprawić nosuchelementException Java

Jak naprawić nosuchelementException Java
W Javie nosuchelemElementException jest podniesiony, gdy maksymalny limit iterable zostaje przekroczony. Ten wyjątek jest podnoszony przez różne metody akcesoriów wyliczenia, iteratora lub tokenizatora, aby sygnalizować, że żądany element nie jest obecny. NosuchelemElementException jest określane jako niekontrolowane oczekiwania, ponieważ pochodzi z recepcji wykonania. Aby naprawić ten wyjątek, sprawdź, czy obiekt podstawowy zawiera więcej elementów przed wdrożeniem metod akcesoriów, które prawdopodobnie generują NosuchelemElementException. Istnieją pewne metody ustalenia, czy obiekt ma więcej elementów niż w określonych interfejsach, które zawierają te metody akcesoriów.

Przykład 1:

Tam mamy różne metody akcesoriów, które rzucają ten wyjątek, jeśli żądany element nie istnieje. Jeśli w iteracji nie ma więcej elementów, metoda następnego () w Javie daje NosuchelemElementException. W przeciwnym razie zwraca następny element umieszczony w iteracji. Mamy następujący przykład, w którym najpierw definiujemy klasę Java i wdrażamy program w metodzie Main () klasy (. Mamy Deklaracja zmiennej „Starray”, w której zainicjowana jest tablica. Dodajemy tylko jeden element do listy tablic, który jest ciągiem.

Następnie tworzymy zmienną „ITRARR” dla klasy iteratora, aby iterować elementy danej listy ArrayList. Zmienna „ITRARR” jest następnie nazywana „Starry” wraz z metodą iterator (). Następnie drukujemy następny element tablicy „Strarray”, który drukuje podaną wartość ArrayList. Metoda następna () jest stosowana w celu uzyskania kolejnego elementu od arraylist. Ponadto drukujemy następny element z poprzedniej listy arraylist, który nie istnieje, ponieważ dostarczyliśmy tylko jeden element arrayList „Strarray”.

Importuj Java.Util.*;
klasa publiczna próbkaProgram1
public static void main (string [] args)
ArrayListstrray = new ArrayList ();
Strarray.add (nowy ciąg („przykład Java”));
Iterator itrarr = strarray.iterator ();
System.na zewnątrz.println (iTrarr.Następny());
System.na zewnątrz.println (iTrarr.Następny());

Wykonanie programu podniosło NosuchElementException. Stwierdzono, że wiemy, że nie ma takiego następnego elementu iteracji po pobraniu danego elementu.

Przykład 2:

Poprzedni przykład jest podany z kodem źródłowym, który podniósł NosuchelemElemException dla iteracji następnego elementu metodą następnego (). Teraz w tym przykładzie jest następna metoda akcesoriów klasy iterator. Ale ponieważ hashmap jest pusty, otrzymujemy NosuchelemElementException. Najpierw mamy zdefiniowaną metodę Main () klasy Java, w której ustawiamy interfejs hashset. Oświadczamy obiekt „MySet” klasy set i przypisujemy Hashset (), który jest pusty. Następnie mamy obiekt hashtabla, który jest „mowy”, w którym zdefiniowano pusty hashtable (). Następnie stosujemy iterator za pomocą metody następnej (). Iterator iterator itera nad zestawem, a następnie podaje następną wartość zestawu. Otrzymujemy również elementy z metody hashtable () za pośrednictwem metody Elements () i następnego elementu dla tabeli za pomocą metody NextElement (). Dostajemy NosuchelementExecection, ponieważ zarówno hashset, jak i hashtable są puste.

Importuj Java.Util.Hashset;
Importuj Java.Util.Hashtable;
Importuj Java.Util.Ustawić;
klasa publiczna próbkaProgram2
public static void main (string [] args)
Set mySet = new Hashset ();
HashTableMyTable = new HashTable ();
MySet.iterator ().Następny();
Mój stół.elementy().NextElement ();

Tam otrzymujemy dane wyjściowe, które rzuca NosucheLEMENTEXECPINE, ponieważ staramy się uzyskać puste elementy, które nie są możliwe.

Przykład 3:

Teraz mamy rozwiązanie, aby uniknąć wyjątku „NosuchelementException”. Musimy wywołać iterator, którym jest metoda HASNEXT (). Metoda HASNEXT () weryfikuje za każdym razem podczas iteracji podczas procesu, że element jest obecny w zestawie później lub nie. Zacznijmy od programu metody HasNext (). Najpierw deklarujemy zmienną klasę ArrayList „A”, w której ArrayList jest zdefiniowany z pustymi wartościami. Wkładamy ciąg po utworzeniu listy arraylist z metody add (). Następnie wywołujemy obiekt „i” iterator, który nazywa się metodą iterator () arraylist „a”. Element, który przemierza się z iteratorem (), jest realizowany za pomocą pętli while. While pętla ma warunek wykorzystujący metodę HasNext () do weryfikacji istnienia następnego elementu z określonej listy tablicy. Gdy HASNEXT () podaje prawdziwe wskazanie, wykonana jest metoda następnego () w instrukcji drukowania.

Importuj Java.Util.*;
klasa publiczna próbkaProgram3
public static void main (string [] args)
ArrayList A = new ArrayList ();
A.Dodaj (nowy ciąg („Witamy uczniów”));
Iterator i = a.iterator ();
podczas gdy ja.HASNEXT ())
System.na zewnątrz.println (i.Następny());


NosucheelElementException nie jest podniesiony z poprzedniego programu, ponieważ HasNext () sprawdza elementy po, a następnie metoda () metoda () zapewnia element arrayList.

Przykład 4:

Istnieje inne rozwiązanie dla wyjątku, że technika instancji klas StringTokenizer HasMoretokens () bada ciąg tokenizatora, aby ustalić, czy istnieją dodatkowe tokeny. Ustawiamy obiekt „s” typu ciągu i przypisujemy tam ciąg. Następnie mamy obiekt „strToken”, w którym wywołujemy klasę StringTokenizer i ustawiamy obiekt ciągów „s” i białą wartość przestrzeni. Następnie mamy trochę czasu na iterację pętli, w której wdrażamy HasMoRetoken, aby obsłużyć „NosuchelemElementException”. Następnie nazywamy metodą NextToken (), aby wydrukować ciąg.

Importuj Java.Util.StringTokenizer;
klasa publiczna próbkaProgram4
public static void main (string args [])
String s = "Java Program";
StringTokenIzertrtoken = new StringTokenizer (s, „”);
podczas gdy (Strtoken.HASMORETOKENS ())
System.na zewnątrz.println (strToken.NextToken ());


Nie ma wyjątku, ponieważ metoda HasNextToken () jest wykonywana do obsługi wyjątku. NextToken reprezentuje wartości ciągów do końca.

Przykład 5:

Metoda poprzedniego () Listiteratora zwraca poprzedni element kolekcji. NosuchelemElementException jest rzucany w czasie wykonywania, jeśli metoda jest używana na pustym elemencie lub w miejscu początkowym elementu. Tworzymy pustą listę arraylist w zmiennej „StringList”. Następnie dodajemy kilka ciągów do listy. Listiterator () jest wywoływany do procedury iteracji w ArrayList. Następnie zatrudniamy dwa razy w programie w programie. Po pierwsze, pętla While określa element po formie metody HASNEXT (), który może uzyskać następny element, wywołując później metodę HasNext (). Drugi, podczas gdy pętla używa metody Hasprevious () na wartościach iteratora, aby uzyskać poprzednią wartość z ArrayList. Obie te metody obsługują wyjątek, weryfikując następne i poprzednie wartości.

Importuj Java.Util.ArrayList;
Importuj Java.Util.Listiterator;
klasa publiczna próbkaProgram5
public static void main (string args [])
ArrayListstringList = new ArrayList ();
Lista string.Dodaj („java”);
Lista string.Dodaj („Ruby”);
Lista string.Dodaj („Scala”);
ListiteratorItr = StringList.Listiterator ();
While (ITR.HASNEXT ())
ITR.Następny();

While (ITR.HaspRevious ())
System.na zewnątrz.println (ITR.poprzedni());


Pierwsze otrzymuje kolejne wartości arraylist z badania metodą HASNEXT (). Następnie otrzymujemy poprzednią wartość arrayList w wyjściu z metody HaspRevious (). Obsługuje się tam również NosuchelementException.

Przykład 6:

Kolejnym prostym rozwiązaniem jest metoda wyliczenia HASMoreElements (), której należy użyć do ustalenia, czy to wyliczenie zawiera dodatkowe elementy. Wyliczenie powraca, jeśli ma więcej elementów. W przeciwnym razie zwraca fałsz. Generujemy kolekcję pustych wektorów w obiekcie wektorowym „vect”, który jest dodawany do wartości liczbowej. Następnie określamy obiekt wyliczenia „E”, aby uzyskać elementy z jego metody elementu (). Następnie wdrażamy metodę HASMoreElements () w warunkach WHIN (), aby sprawdzić, czy więcej elementów są dostarczane przez wektory wyliczenia, czy nie.

Importuj Java.Util.Wyliczenie;
Importuj Java.Util.Wektor;
klasa publiczna próbkaProgram6
public static void main (string args [])
Vectorvect = new vector ();
Vect.Dodaj (8934);
Vect.Dodaj (6127);
Wyliczenie e = vect.elementy();
While (e.HASMoreElements ())
System.na zewnątrz.println (e.NextElement ());


Kolekcja wektorowa wszystkich elementów jest wyświetlana na następującym ekranie. Hasmoreelement () obsługuje wyjątek, identyfikując dalsze elementy.

Wniosek

NosuchelemElementException jest rozwiązane przez określenie, czy następna lokalizacja iterable jest wypełniona lub pusta. Pokazaliśmy, w jaki sposób ten błąd jest podniesiony podczas używania metody iterabalnej w pustej kolekcji i następnego elementu z kolekcji. Musimy umieścić kontrolę przed iterowaniem go przez elementy, aby pozbyć się tego wyjątku. Podaliśmy wiele metod rozwiązania tego wyjątku podczas wykonywania programu.