2015-06-21 4 views
3

Я пишу цикл, который присваивает номер 15 каждому элементу массива без использования каких-либо операторов сравнения, таких как <, ==,> или! =.Назначение значений массива с использованием обработки исключений

Существует, по-видимому, способ сделать это с помощью обработки исключений.

Любые идеи?

Вот что я пробовал:

public class ArrayProblem { 


public static void main(String[] args) { 

    int[] arrayElements = {0,0,0,0,0}; 
    boolean isValid = true; 
    System.out.println("Array element values before: " + arrayElements[0] + "," + arrayElements[1] + "," + arrayElements[2] + "," + arrayElements[3] + "," + arrayElements[4]); 

    try 
    { 
     while(isValid) 
     { 
     throw new Exception(); 
     } 
    } 

    catch(Exception e) 
    { 
     System.out.println(e.getMessage()); 
    } 

    finally 
    { 
     //finally block executes and assigns 15 to each array element 
     arrayElements[0] = 15; 
     arrayElements[1] = 15; 
     arrayElements[2] = 15; 
     arrayElements[3] = 15; 
     arrayElements[4] = 15; 
     System.out.println("New array element values are " + arrayElements[0] + "," + arrayElements[1] + "," + arrayElements[2] + "," + arrayElements[3] + "," + arrayElements[4]); 
    } 
    } 
} 
+2

1.why введение Try ... Catch, когда вы можете обойтись без – Satya

+0

Вашего решения предполагает, что размер массива равен 5. Это проблема? Вам нужно сделать это динамически? –

+0

Размер массива произвольный, я просто использовал 5 элементов массива для моего примера, это может быть любое количество элементов. –

ответ

5

Arrays.fill(intArray, 15);

Внутри эта функция, вероятно, делает сравнение, но, возможно, оно отвечает вашим ограничениям?

Если решение требует петли, вот еще один способ, без прямого сравнения:

int[] array = new int[10]; 
int arrIdx = -1; 
for (int i : array){ 
    arrIdx++; 
    array[arrIdx]=15; 
    System.out.println(array[arrIdx]); 
} 
+0

Это может сработать, я думаю, что единственным ограничением в этой проблеме является то, что цикл должен назначать значение 15 каждому элементу массива с использованием указанных операторов, поэтому я не могу понять, почему функция Arrays.fill не могла " t используется для решения проблемы. –

+0

@SteveWalsh Просто добавлено другое решение, которое не требует try-catch. –

3

Это ужасная идея в реальном коде. Если вам просто нужно хак решение, просто цикл, а увеличивающийся индекс счетчик доступа к каждому элементу массива, пока вы не выйдете за пределы

// prepare array, arbitrary size 
Random random = new Random(); 
int size = random.nextInt(20); 
int[] array = new int[size]; 

int i = 0; 
// solution 
try { 
    for (;;) 
     array[i++] = 15; 
} catch (ArrayIndexOutOfBoundsException e) { 
    // ignore 
} 

// verify 
System.out.println(Arrays.toString(array)); 
Смежные вопросы