2016-02-26 2 views
2

Когда пользователь вводит значение, он проверяет, существует ли он в массиве.Найти появление элемента в массиве в Java

import java.util.Scanner; 

public class array1 { 
    public static void main(String[]args){ 
     Scanner scan = new Scanner(System.in); 
     System.out.println("Enter a value"); 
     int num = scan.nextInt(); 
     int [] arraynumbers = {1,2,3,4,5,6,7,8,9,10}; 
     for(int i = 0; i < arraynumbers.length; i++) { 
      if (arraynumbers[i] == num){ 
       System.out.println("The value you have entered " + num + ", exists in the array"); 

      }else{ 
       System.out.println("The value you have entered does not exist in the array"); 
      } 
     } 
    } 
} 

Так что, когда я когда-либо набрать номер, чтобы проверить его печатает:

Enter a value 
3 
The value you have entered does not exist in the array 
The value you have entered does not exist in the array 
The value you have entered 3, exists in the array 
The value you have entered does not exist in the array 
The value you have entered does not exist in the array 
The value you have entered does not exist in the array 
The value you have entered does not exist in the array 
The value you have entered does not exist in the array 
The value you have entered does not exist in the array 
The value you have entered does not exist in the array 

Я не 100% уверен, почему это происходит.

Вопросы

  1. Является ли это потому, что ничто не мешает его от завершения, когда он находит число в массиве?
  2. Есть ли способ предотвратить это?

Спасибо

+0

Введите значение Значение, которое вы ввели, не существует в массиве Значение вы ввели, не существует в массиве Значение, которое вы ввели 3, существует в массиве –

+0

, пожалуйста, отметьте ответ на вопрос или обновите вопрос – nullpointer

ответ

0

Когда вы кладете эту проверку в цикле, как это, это означает, что вы проверяете каждое число в массиве:

for(int i = 0; i < arraynumbers.length; i++) { 
} 

Вы можете сделать это:

List<Integer> values = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); 

if (values.contains(num)) { 
    System.out.println("The value you have entered " + num + ", exists in the array") 
} else { 
    System.out.println("The value you have entered does not exist in the array"); 
} 
3

Возможно, вы ищете break. Весь цикл перемещается, даже если найден ваш num. И любой из блоков if или else выполнен. Это поможет вам:

if (arraynumbers[i] == num) { 
    System.out.println("The value you have entered " + num + ", exists in the array"); 
    break; 
} 

и, вероятно, чтобы избежать печати ничего в случае, если значение не соответствует Вы можете удалить else блок из вашего кода.

+0

Это все равно будет печатать все значения, пока вы не нажмете тот, который вы ввели , – duffymo

+0

он выполнил бы else, если значение не было найдено. Именно то, что ищет OP, я верю. – nullpointer

+0

от Q: «ничего не прекращаю, когда он находит число в массиве» – nullpointer

2

Оператор break определенно является ключевым. Тем не менее, если вы хотите напечатать номер найден или нет, вы можете рассмотреть что-то вроде этого:

int num = scan.nextInt(); 
int [] arraynumbers = {1,2,3,4,5,6,7,8,9,10}; 
String srchStr = "does not exist"; 

for(int i = 0; i < arraynumbers.length; i++) { 
    if (arraynumbers[i] == num) { 
     srchStr = "exists"; 
     break; 
    } 
} 

System.out.println("The value you have entered " + num + ", " + srchStr + " in the array");