Создание программы, позволяющей пользователю вводить число отжиманий, которые они сделали в сеансе, отображая этот номер сеанса в одном текстовом просмотре, а также сумму всех сеансов 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);
}
}
});
У вас есть небольшая ошибка в 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);
}
}
});
убрать последнюю точку с запятой:
for (int i = 0; i < pushuplist.size(); i++);
Ваш код ниже имеет дополнительную точку с запятой после объявления цикла 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++);
Следующий исполняемый оператор - точка с запятой ;
так что ничто не проходит через все итерации цикла.
Надеюсь, это объяснение должно пролить немного света на то, что там происходит.
Удачи в вашем приложении!