#java #android-studio
#java #android-studio
Вопрос:
У меня есть простой интерфейс, в который пользователь вводит число (положительное или отрицательное, или 0)
У меня есть 20 переменных int score1-20
после нажатия кнопки я затем хочу циклически просматривать каждую переменную, пока не найду следующую пустую, а затем присвоить номер, введенный пользователем. Если все переменные имеют значения, я выполню вычисление.
int score1.....score20;
calculateBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//code to convert an input value to an int
if(score1 == null)
score1 = currentScore;
//else-if statements to go through all 20 scores until one is not null. If you
populate score20 then do another calculation to give the final output.
}
}
});
Я знаю, что, вероятно, есть лучший способ перебирать их с помощью цикла for.
Есть ли лучший способ проверить, является ли int пустым, а не изменять тип данных на целое число, которое может быть null? Я не хочу присваивать всем целым числам значение 0, поскольку int потенциально может содержать значение 0
Комментарии:
1. Я не совсем понимаю: если вы не хотите использовать объект типа Integer, но также не хотите рассматривать значение типа «0» как пустое значение, каково именно ваше определение того, что int является «пустым»?
2. используйте
ArrayList
и добавляйте все оценки доsize()
возврата20
3. Пользователь вводит оценку, поэтому оценка может быть, например, -5, но она также может быть 0 или 10.
Ответ №1:
Вы могли бы использовать ArrayList и добавлять пользовательский ввод до тех пор, пока список не будет иметь определенную длину, а затем выполнить вычисления
Комментарии:
1. Список должен быть гибким, чтобы после того, как все 20 баллов будут действительными, в следующий раз, когда пользователь введет оценку, оценка 20 была бы заменена на 19, 19 на 18 и т.д., А новая оценка была бы score1. Возможно ли это с использованием ArrayList? Также позже в вычислении мне нужно упорядочить 20 баллов по значению, а затем усреднить 8 наименьших баллов.. Так что не уверен, что это сработает.
2. вы могли бы ввести счетчик и добавить текущее значение в позицию счетчика (вы также могли бы использовать массив тогда вместо списка массивов). если счетчик достигает 20, вы вычисляете и сбрасываете счетчик