Как получить код для двойных значений (x * 2) меньше 10 в массиве? (Ява)
Я беру онлайн-класс программирования Java (я новичок), и я не могу понять, как правильно закончить код. Я уже написал то, что, как я думаю, должен быть включен, однако мне не хватает чего-то, что сделает код полностью.
Направления: удвоить любое значение элемента, которое меньше minVal. Пример: если minVal = 10
, то dataPoints = {2, 12, 9, 20}
становятся {4, 12, 18, 20}
.
public class StudentScores {
public static void main (String [] args) {
final int NUM_POINTS = 4;
int[] dataPoints = new int[NUM_POINTS];
int minVal = 0;
int i = 0;
dataPoints[0] = 2;
dataPoints[1] = 12;
dataPoints[2] = 9;
dataPoints[3] = 20;
minVal = 10;
// DO NOT EDIT ANYTHING ABOVE THIS COMMENT. ABOVE IS THE DEFAULT CODE OF ASSIGNMENT
for (i = 0; dataPoints[i] < minVal; ++i) {
dataPoints[i] = dataPoints[i] * 2;
}
// DO NOT EDIT ANYTHING BELOW THIS COMMENT. BELOW IS DEFAULT CODE OF ASSIGNMENT
for (i = 0; i < NUM_POINTS; ++i) {
System.out.print(dataPoints[i] + " ");
}
System.out.println();
return;
}
}
Я сделал комментарии о том, с чем не следует общаться, поскольку я использую интерактивную интерактивную книгу и не могу редактировать или изменять код по умолчанию. Кроме того, мы работаем с массивами в этой главе.
Я новичок в этом сайте в том смысле, что не знаю неписанных способов stackoverflow, но я неоднократно просматривал его в Интернете, чтобы узнать, как удвоить значения для массива в java, но я не получаю результаты поиска Мне нужно помочь.
Сообщения об ошибках, которые я получаю:
Testing minVal = 10 and dataPoints = {2, 12, 9, 20}
Expected output: 4 12 18 20
Your output: 4 12 9 20
Я думал, что компилятор должен иметь возможность полностью прочитать строки, чтобы зарегистрировать, что 9 также меньше 10 и, следовательно, должно быть удвоено до 18, но это не так. Что мне не хватает, чтобы прочитать 9?
В вашем коде 12 <10 оценивается как ложное, и поэтому он выходит из цикла и, следовательно, дает неправильный вывод. Проверьте приведенный ниже код:
for (i = 0; dataPoints[i] < NUM_POINTS ; ++i) {
if(dataPoints[i] < minVal) {
dataPoints[i] = dataPoints[i] * 2;
}
}
Я зацикливал все элементы массива, и если элемент <minVal, я умножил его на 2.
Второй раздел оператора for
- это условие завершения: после того, как он оценит значение false, ваш цикл прекратит выполнение.
В этой конкретной проблеме вы пытаетесь просмотреть каждое значение в вашем массиве dataPoints
и удвоить его. Это требует использования индексной переменной.
Ваша индексная переменная будет отслеживать вашу позицию в массиве при перемещении слева направо. Начиная слева, с индексом 0
, вы будете двигаться вправо, пока не окажетесь в конце массива.
++i
заботится об увеличении вашей индексной переменной каждый раз, когда цикл работает. Это то, что перемещает вас через массив.
Условие завершения должно проверить, просмотрели ли вы все значения в массиве. После того, как вы прошли все значения в вашем массиве, ваша индексная переменная целиком указывается в конце. И помните, как только условие завершения будет false
ваш цикл прекратит выполнение. Поэтому вы хотите запустить свой код, в то время как i
(ваша индексная переменная) меньше размера массива (dataPoints.length
).
После того, как вы выяснили границы цикла for
, просто проверьте свой условный оператор if-then
перед обновлением значений:
for (i = 0; i < dataPoints.length; ++i) {
if (dataPoints[i] < minVal) {
dataPoints[i] = dataPoints[i] * 2;
}
}
for (i = 0; i < NUM_POINTS; ++i) {
if (dataPoints[i] < minVal) {
dataPoints[i] = (dataPoints[i] * 2);
}
}