Как рассчитать сумму целых чисел ArrayList из пользовательского ввода - PullRequest
1 голос
/ 13 апреля 2019

Создание программы, позволяющей пользователю вводить количество отжиманий, которые он сделал в сеансе, отображая номер этого сеанса в одном текстовом просмотре, а также сумму всех сеансов 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);
            }

        }
    });

Ответы [ 3 ]

0 голосов
/ 13 апреля 2019

Ваш код ниже имеет дополнительную точку с запятой после объявления цикла 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++);

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

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

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

0 голосов
/ 13 апреля 2019

У вас есть небольшая ошибка в 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 голосов
/ 13 апреля 2019

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

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