Как рассчитать сумму целых чисел ArrayList из пользовательского ввода

1

Создание программы, позволяющей пользователю вводить число отжиманий, которые они сделали в сеансе, отображая этот номер сеанса в одном текстовом просмотре, а также сумму всех сеансов push-up во втором текстовом просмотре.

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

есть ли проблема с моим кодом, или этот метод? Любые советы о том, как найти сумму предметов из архива в диапазоне дат, также будут высоко оценены.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final ArrayList<Integer> pushuplist = new ArrayList<>();

    EditText PushupEditText = findViewById(R.id.PushupEditText);
    Button AddButton = (Button) findViewById(R.id.Submit);
    AddButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            EditText PushupEditText = findViewById(R.id.PushupEditText);
            TextView PushupTextView = findViewById(R.id.PushupTextView);
            TextView TotalPushupsText = findViewById(R.id.TotalPushupsText);

            int PushupNum = Integer.parseInt(PushupEditText.getText().toString());
            pushuplist.add(PushupNum);

            PushupTextView.setText(PushupNum+"");

            int sum = 0;
                for (int i = 0; i < pushuplist.size(); i++);
            {
                sum += pushuplist.get(i);
            }

        }
    });
Теги:
arraylist
integer
sum

3 ответа

0

У вас есть небольшая ошибка в for() Используйте этот код вместо.

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ArrayList<Integer> pushuplist = new ArrayList<>();

EditText PushupEditText = findViewById(R.id.PushupEditText);
Button AddButton = (Button) findViewById(R.id.Submit);
AddButton.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        EditText PushupEditText = findViewById(R.id.PushupEditText);
        TextView PushupTextView = findViewById(R.id.PushupTextView);
        TextView TotalPushupsText = findViewById(R.id.TotalPushupsText);

        int PushupNum = Integer.parseInt(PushupEditText.getText().toString());
        pushuplist.add(PushupNum);

        PushupTextView.setText(PushupNum+"");

        int sum = 0;
        for (int i = 0; i < pushuplist.size(); i++)
        {
            sum += pushuplist.get(i);
        }

    }
});
0

убрать последнюю точку с запятой:

for (int i = 0; i < pushuplist.size(); i++);
0

Ваш код ниже имеет дополнительную точку с запятой после объявления цикла for. Удаление этой точки с запятой должно помочь.

int sum = 0;
for(int i = 0; i < pushuplist.size(); i++); // remove this semicolon
{
    sum += pushuplist.get(i);
}

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

Когда вы пишете цикл for, если фигурные скобки не добавлены, будет выполнен следующий исполняемый оператор, который используется для итераций цикла.

for(int i = 0; i < 10; i++) System.out.println(i);

for(int i = 0; i < 10; i++)
    System.out.println(i);

Это оба экземпляры действительного кода. В обоих случаях печать будет запущена 10 раз и выведет значение i.

В случае, когда после объявления цикла for стоит точка с запятой, например, у вас:

for(int i = 0; i < pushuplist.size(); i++);

Следующий исполняемый оператор - точка с запятой ; так что ничто не проходит через все итерации цикла.

Надеюсь, это объяснение должно пролить немного света на то, что там происходит.

Удачи в вашем приложении!

  • 1
    Спасибо за ответ и объяснение! Дополнительный урок в конце был более полезным, чем решение

Ещё вопросы

Сообщество Overcoder
Наверх
Меню