Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Подскажите где я совершил ошибку?

Влфдимир Щёкин Ученик (220), на голосовании 2 месяца назад
 public class Practicum { 

public static void main(String[] args) {
int money = 500;
int foodPerDay = 100;
int days = 0;
for (int i = money; i > 0; Money - foodPerDay) {
int days = days + 3;
System.out.println("На " + days + "-й день останется " + i - foodPerDay + " рублей.");
}
System.out.println("Денег хватит на " + days + " дней.");
}
}
Должно вылезти так

На 3-й день останется 400 рублей.
На 6-й день останется 300 рублей.
На 9-й день останется 200 рублей.
На 12-й день останется 100 рублей.
На 15-й день останется 0 рублей.
Денег хватит на 15 дней.
Голосование за лучший ответ
Лис Грибочкин Мудрец (10063) 3 месяца назад
Устроился в какую-то шapaшкинy контору
Double Интеллектуал Мыслитель (7462) 3 месяца назад
Вот исправленный вариант:

public class Practicum {

public static void main(String[] args) {
int money = 500;
int foodPerDay = 100;
int days = 0;

for (int i = money; i > 0; i -= foodPerDay) {
days += 3;
System.out.println("На " + days + "-й день останется " + i + " рублей.");
}

System.out.println("Денег хватит на " + days + " дней.");
}
}


Основные исправления:
1. Условие в цикле: В вашем цикле for было написано Money - foodPerDay, что не является корректным синтаксисом. Вместо этого используйте i -= foodPerDay, чтобы уменьшать значение i на foodPerDay в каждой итерации.

2. Переменная days: Внутри цикла вы объявляли новую переменную days, что создавало локальную переменную, а не увеличивало значение уже существующей. Уберите int перед days внутри цикла.

3. Вывод остатка денег: В строке вывода необходимо исправить порядок операций, чтобы правильно отображать оставшиеся деньги: используйте i вместо i - foodPerDay.

Теперь программа будет работать так, как вы ожидаете, и выводить правильные значения.
ass assМудрец (10722) 3 месяца назад
когда ответ пишете есть внизу кнопка которая называется "блок кода"

примерно вот так

 public class Practicum {   

public static void main(String[] args) {
int money = 500;
int foodPerDay = 100;
int days = 0;

for (int i = money; i > 0; i -= foodPerDay) {
days += 3;
System.out.println("На " + days + "-й день останется " + i + " рублей.");
}

System.out.println("Денег хватит на " + days + " дней.");
}
}
Double Интеллектуал Мыслитель (7462) ass ass, спасибо за уточнение! Вот код с использованием блока кода:
 public class Practicum {    
 
    public static void main(String[] args) {    
        int money = 500;    
        int foodPerDay = 100;    
        int days = 0;    
  
        for (int i = money; i > 0; i -= foodPerDay) {    
            days += 3;     
            System.out.println("На " + days + "-й день останется " + i + " рублей.");    
        }    
  
        System.out.println("Денег хватит на " + days + " дней.");    
    }    
} 
 
Влфдимир ЩёкинУченик (220) 3 месяца назад
А можете объяснить новичку зачем нужно и что делает знак равно в цикле где i -= foodPerDay?
ass ass Мудрец (10722) Влфдимир Щёкин, это оператор присваивания, в данном случае оператор с вычитанием. это сокращение от такого кода
 i = i - foodPerDay

сокращённо пишется

i -= foodPerDay 
Влфдимир ЩёкинУченик (220) 3 месяца назад
И почему без него код не срабатывает
Double Интеллектуал Мыслитель (7462) Влфдимир Щёкин, Почему без него код не сработает? Если убрать i -= foodPerDay, то значение i не будет изменяться в каждой итерации цикла. Это приведет к тому, что условие i > 0 всегда будет истинным (так как i останется равным 500), и цикл будет выполняться бесконечно. Это называется бесконечным циклом, и программа никогда не завершится. Знак равно в выражении i -= foodPerDay необходим для того, чтобы обновить значение переменной i в каждой итерации цикла, позволяя программе корректно отслеживать, сколько денег осталось и когда закончится цикл.
Влфдимир ЩёкинУченик (220) 3 месяца назад
Спасибо за информацию)
У меня есть ещё один вопрос
А что нужно сделать, что бы вывод текста начинался не с "На 3-й день останется 500 рублей", а с 400 рублей?
Double Интеллектуал Мыслитель (7462) Влфдимир Щёкин, как много вопросов в одном вопросе за 5 баллов)
Sergio 2.1 Оракул (67208) 3 месяца назад
 public class Practicum { 
public static void main(String[] args) {
int money = 500;
int foodPerDay = 100;
int days = 0;

for (int i = money; i >= 0; i -= foodPerDay) {
days += 3;
System.out.println("На " + days + "-й день останется " + i + " рублей.");
}

System.out.println("Денег хватит на " + days + " дней.");
}
}
Исправления:

1. В цикле for:
- Изменено условие на i >= 0, чтобы включить случай, когда остаётся 0 рублей.
- Исправлено обновление переменной i: i -= foodPerDay.

2. Удалено повторное объявление переменной days внутри цикла.

3. Изменено вычисление оставшихся денег в выводе: просто i вместо i - foodPerDay.

4. Убрано лишнее Money - foodPerDay в объявлении цикла for.
Похожие вопросы