#java #arrays
#java #массивы
Вопрос:
Я хочу разделить элементы моего массива для первого элемента массива, метод работает нормально, но последний элемент не был разделен.
Я думаю, что мне пришлось использовать <= array.length … , но это, очевидно, дает мне исключение array out of bound. Как я могу добиться этого без <=length . PS: первый элемент не следует опускать / принимать во внимание, поскольку это дивиденд. Мой код следующий:
public class Ris
{
public static void main()
{
double[] testResult = {2.0, 3.6, 5.0, 2.0};
for(int element = 0; element < testResult.length; element ){
if( testResult[element] > testResult[0]){//excludes 1st element
testResult[element] = testResult[element] / testResult[0] ;// divides elements by first element 0
}
System.out.println(testResult[element]);
}
}
}
Ответ №1:
Вы пропускаете первый элемент в плохой манере —
if( testResult[element] > testResult[0]){
Пропускает все, что не больше первого элемента — больше 2.0
Вероятно, вам нужно протестировать
if( element > 0){
Но вы также можете просто пропустить первый элемент в определении for cycle
for(int element = 1; element < testResult.length; element ){
Ответ №2:
if( testResult[element] > testResult[0]){//excludes 1st element
Здесь вы тестируете значения, а не позиции. Попробуйте это вместо:
public class Ris
{
public static void main()
{
double[] testResult = {2.0, 3.6, 5.0, 2.0};
for(int element = 1; element < testResult.length; element ){
testResult[element] = testResult[element] / testResult[0] ;// divides elements by first element 0
System.out.println(testResult[element]);
}
}
}
Ответ №3:
Вместо:
if( testResult[element] > testResult[0]){//excludes 1st element
Вы должны использовать:
if(element > 0){//excludes 1st element
чтобы исключить 1-й элемент.
Или пусть ваш цикл for начинается с 1-й позиции (пропустите 0-ю позицию):
for(int element = 1; element < testResult.length; element )
Ответ №4:
Чтобы исключить первый элемент, вы должны начать отсчет с 1, а не с 0. Т.е. измените на
for (int element = 1; ....
Ответ №5:
В более общем плане, плохой практикой является объединение всех ваших переменных в один массив или использование одной и той же переменной для ввода и вывода. Вы скорее должны иметь:
double denominator = 2.0;
double[] inputValues = new double[]{3.6, 5.0, 2.0};
double[] outputValues = new double[inputValues.length];
Если вы сделаете это вместо этого, for
цикл теперь начинается с элемента 0
и заканчивается перед ( <
) inputValues.length
, как обычно и строятся for
циклы.