2013-03-17 6 views
-4

Название довольно много покрывает его. По какой-то причине эта проблема ускользает от меня, и я не могу найти логический ответ на этот вопрос.Умножение всех значений массива с использованием расширенного цикла? Java

EDIT:

Скажем, у меня есть

int[] values = (2,5,3,2,1,4,6,3,2,1,5,3) 

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

for (int element : values) 
{ 
NO CLUE WHAT TO PUT HERE 
} 

Мое первое предположение, однако, состояло в том, что это невозможно с помощью усиленного цикла.

Является ли мой учебник просто попыткой обмануть меня, чтобы научить меня чему-то вроде урока?

+3

стандартный ответ: Что вы получили до сих пор? –

+2

Как вы думаете, кто-то может помочь вам, не видя ваш код? –

+3

Нет, название не покрывало его. –

ответ

2

Это не может быть сделано с усиленным циклом. Предположим, у вас есть массив: (Я обновил ответ после того, как OP обновил вопрос, обновление ниже).

int[] a = {1,2,3};

Когда вы делаете:

for(int num : a) { 
    num = num*something; 
} 

Вы фактически умножая другой переменной (массив не будет затронут) ..

num в приведенном выше примере только копия элемента массива. Таким образом, вы изменяете локальную переменную, а не сам массив.

Read this, и вы увидите, что значение в массиве копируется в локальную переменную, и используется эта локальная переменная. Таким образом, это умножение не повлияет на исходные значения массивов.


OP UPDATE:

Если вы хотите, чтобы умножать элементы и получить результат, вы можете . Ваш учебник не пытается обмануть вас. Он не просит вас изменить значения. Но использовать их для того, чтобы сделать некоторые расчеты:

int[] values = {2,5,3,2,1,4,6,3,2,1,5,3}; 
int result=1; 
for(int value : values) { 
    result *= value; 
} 
System.out.println("The result: " + result); //Will print the result of 2*5*3*2*... 
0

Это не может быть сделано, вы должны будете использовать массив старого типа адресации:

for (int i = 0; i < array.length; i++) { 
    array[i] = array[i] * 2; 
} 
+0

Или прожектор, так как ему не нужно превышать первоначальные значения. –

+0

Да, редактирование вопроса сделало мой ответ неправильным. –

0

Это легко можно сделать с помощью улучшенный цикл:

int result = 1; 
for (int element : values) 
{ 
    result *= element; 
} 
0
int index = 0; 
for (int element : values) 
{ 

    values[index] = element + someVariable; 
    index++; 
} 
+0

Добро пожаловать в переполнение стека! Хотя вы, возможно, решили проблему этого пользователя, ответы на код не очень помогают пользователям, которые приходят к этому вопросу в будущем. Измените свой ответ, чтобы объяснить, почему ваш код решает исходную проблему. –

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