2014-12-29 3 views
-1

Я только что узнал о массиве и хотел создать простую программу, в которой я использую циклы do-while, чтобы принимать только числа, введенные в массив, но у меня есть некоторые проблемы. проблемаМой массив не работает с моим циклом do-while

Scanner input = new Scanner(System.in); 
int[] values; 
values = new int[5]; 
values[0] = 16; 
values[1] = 10; 
values[2] = 11; 
values[3] = 14; 
values[4] = 17; 
    int value; 
    do { 
    System.out.println("Enter a number:"); 
     value = input.nextInt();  
    } 
    while(value != values[]); 

остальное будет «если» заявление, которые содержали некоторые из текста Собирается на основе которых число из массива будут введены. Условие «while» появляется в ошибке в том, как я ввел его как

EDIT: Поскольку это невозможно в java, я могу просто написать! = 16,10,11,14,17 без получения ошибки ? Массив не будет работать в состоянии, поэтому я до сих пор застрял в выяснении способ включения нескольких чисел в состоянии

+1

«Условие« while »появляется в ошибке» «Всякий раз, когда вы получаете ошибки или исключения, вы должны публиковать их в вопросе. – csmckelvey

+0

Подсказка: попробуйте написать вспомогательный метод, который проверяет, находится ли int в массиве, и используйте это в своем состоянии цикла. –

+0

Используйте Arrays.binarySearch() для поиска значения в значениях [], например in while (Arrays.binarySearch (значения, значение) <0) ... как в моем ответе – boctulus

ответ

1

Как вы видите, что это не возможно просто написать то время как, но вы можете искать значение в массиве или проверить, если значение содержится в списке (значение = значения []!):

--- Первый путь

Использование списка целых чисел:

import java.util.Scanner; 
import java.util.List; 
import java.util.ArrayList; 

public class InArrayWithAsListContains { 

    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     int value=0; 
     List<Integer> values = new ArrayList<Integer>(); 

     values.add(16); 
     values.add(10); 
     values.add(11); 
     values.add(14); 
     values.add(17);  

     do { 
      System.out.println("Enter a number:"); 
      value = input.nextInt();  
     } while(!values.contains(value)); 
    } 
} 

вариация работать со списком, начиная с межд []:

int[] arr = new int[] {16,10,11,14,17};   

// int[] into List<Integer> conversion 
for (int i : arr) values.add(i); 

--- Второй путь

Просто используя массивы и Arrays.binarySearch (значения, ключ)

import java.util.Scanner; 
import java.util.Arrays; 

public class Program { 

    public static void main(String[] args) 
    { 
     Scanner input = new Scanner(System.in); 
     int value=0; 
     int[] values = {16,10,11,14,17}; 

     Arrays.sort(values); 

     do { 
      System.out.println("Enter a number:"); 
      value = input.nextInt();  
     } while(Arrays.binarySearch(values, value) < 0); 
    } 
} 
+0

Это не будет/не работает, и мне интересно, почему OP принял это. – Tom

+0

Я не проверял, но идея верна – boctulus

+0

Нет, это не так. Если OP использует 'int []' (и он это делает), ваша идея не будет работать. И что вы отправляете код без тестирования, это очень ... плохо. – Tom

0

int это не то же самое, что и int[]

5

прекращение состояние вашего do петля:

while(value != values[]) 

не является правовой Java. Вы не можете сравнить значение int с массивом, и вы не можете ссылаться на массив, используя values[]. Я не знаю, чего вы пытаетесь выполнить, но вам нужно добавить определенный индекс в условие завершения или изменить его каким-либо другим способом.

Смежные вопросы