przeszukanie i wstawienie

0

Hej wszystkim


Polecenie musi być wykonane w jednej metodzie Dodaj(int x)do tablicy (wartość) jeśli istnieje  nic nie rób, lub jeśli nie ma to dodaj;

To się skompiluje ,ale nie wiem czy taka idea twgo jest dobra co mam


public boolean dodaj(long searchKey) 
   {
   	 int j;
     for( j=0; j<nElem; j++ ){
     	if(elem[j] == searchKey)
     		break;
     }
     
     if(j==nElem)
     	return false;
     else
     	
     		elem[nElem]=searchKey;
   			nElem++;
     	return true;	
   }
0

Prawie, jeszcze musisz uwzględnić to, że w tablicy nie ma już miejsca.

0

Czy ten kawałek kody wystarczy po else

if(nElem > elem.length)
   System.out.println("Tablica pełna");
0

Komunikatu nie powinno być. W jakiej sytuacji metoda dodaj ma zwracać true, a w jakiej false?

0

wystarczy ,jak metoda będzie void, nie musi nic zwracać ,

0
for(int i = 0; i<nElem; i++)
   if(elem[i]==x)
      //System.out.println("Element istnieje");
      break;			
   else
   {
      if(nElem > elem.length)
      System.out.println("Tablica pełna");
      elem[nElem]=x;
      nElem++;
   }
}

Czy tak zapis kodu już jest dopuszczalny:D

0

Raczej tak:

                if(nElem == elem.length)
                        System.out.println("Tablica pełna");
0

Funkcja nie informuje czy element jest w tablicy, zatem pętla szukająca jest niepotrzebna gdy tablica jest już pełna.

private void dodaj(long x)
{
     if(nElem == elem.length)
     {
          System.out.println("Tablica pełna");
          return;
     }
     for(int i = 0; i<nElem; i++)
     {
          if(elem[i] == x)
          {
              return;
          }
     }                
     elem[nElem] = x;
     nElem++;
}
0

Czy musicie tak sobie utrudniać życie? Ja zapisałbym to tak:

private void dodaj(long x)
{
     if(nElem<elem.length)
     {
          for(int i=0;i<nElem;++i) if(elem[i]==x) return;
          elem[nElem++]=x;
     }
     else System.out.println("Tablica pełna");
}

krótko, zwięźle i na temat a robi dokładnie to co wyżej!

Z tym że:

  • po pierwsze @bogdans popełnił błąd logiczny bo może ta x już siedzi w tablicy zaś program już panikuje - "Tablica pełna"
  • po drugie o nieudanym dodawaniu trzeba poinformować funkcje wywołującą a nie użytkownika, więc:
private boolean dodaj(long x)
{
     for(int i=0;i<nElem;++i) if(elem[i]==x) return true;
     if(nElem>=elem.length) return false;
     elem[nElem++]=x;
     return true;
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1