2015-04-03 1 views
0

Я реализовал последовательный поиск в java. Но я столкнулся с индексом массива из связанной проблемы исключения.Последовательный массив поиска из связанной проблемы в java

, когда я ввожу правильный номер, программа работает нормально. Но, когда я нажимаю на номер, который не находится в пределах массива, программа выходит из строя из-за «ArrayIndexOutOfBoundsException»

public class Sequential { 
public static void search (int arr[]) { 
    Scanner in = new Scanner(System.in); 
    int key; 
    int N = arr.length; 
    int element = 0; 

    System.out.prinln("Enter the number that you want to search: "); 
    key = in.nextInt(); 

    while (key != arr[element] && element <= N) 
    { 
     element++; 
    } 

    if(element > N) 
     {System.out.println("not found, try again...");} 
    else 
     {System.out.println("found, it's in index # " + element);} 
} 
public static void main (String[]args) 
{ 
    int arr[] = { 2, 3, 4, 5, 7, 11, 34, 37, 77 }; 
    search(arr); 
} 
} 
+0

добавить еще одно условие к этому '(key! = Arr [element] && element <= N)' для предотвращения запредельных ограничений. Что-то вроде 'key Kon

+0

@Kon Я использовал оба элемента

ответ

0

Ваш код как таковой есть несколько вопросов, пожалуйста, посмотрите на мой модифицированный код. Должен вам помочь.

public static void search (int arr[]) { 
    Scanner in = new Scanner(System.in); 
    int key; 
    int N = arr.length; 
    int element = 0; 

    System.out.println("Enter the number that you want to search: "); 
    key = in.nextInt(); 
    boolean found = false; 
    while (element < N) 
    { 
     if(key == arr[element]){ 
      found = true; 
      break; 
     } 
     element++; 
    } 

    if(!found) 
     {System.out.println("not found, try again...");} 
    else 
     {System.out.println("found, it's in index # " + element);} 
} 
public static void main (String[]args) 
{ 
    int arr[] = { 2, 3, 4, 5, 7, 11, 34, 37, 77 }; 
    search(arr); 
} 
+0

это сработало спасибо –

0

Попробуйте это:

while (element < N && key != arr[element]) 

Это не работает:

while (key != arr[element] && element < N) 

elements Потому что, когда дойдет до значения N этот код key != arr[element] все еще будет выполняться и вызывая arr[arr.length] броски исключение.