Можно ли "вытащить" результат переменной типа "int" из цикла for в java(если да, то как)?

public class Praktikum {

    public static void main(String[] args) {
        int money = 500; // Деньги на корм
        int foodPerDay = 100; // Стоимость пачки корма
        int days = 0; // Дни, когда вы сможете покупать корм
                
        for(int i = money; (i-foodPerDay) > 0; i = i - foodPerDay) // Здесь опишите цикл, начинаем с 500 рублей 
            for(int d = days; foodPerDay == money; d = d + 3) { // Здесь отразите, что вы будете покупать корм каждые три дня
                System.out.println("На " + (d + 3) + "-й день останется " + (i - 100) + "рублей");// Опишите строку вывода
            }// Цикл оканчивается здесь

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

Ругается на строчку System.out.println("Денег хватит на " + d + " дней.");, пишет "cannot find symbol" и указывает на переменную d.


Ответы (2 шт):

Автор решения: Egor

Вы пытаетесь обратиться к переменной за ее областью видимости.
Переменная объявлена в цикле и "видна" только в в его пределах.

Достаточно объявить d до цикла:

int d = days;
for(; foodPerDay == money; d = d + 3) {
...
}
→ Ссылка
Автор решения: Nick Alexandr

Вот рабочий вариант:

public class Praktikum {

    public static void main(String[] args) {
        int money = 500; // Деньги на корм
        int foodPerDay = 100; // Стоимость пачки корма
        int days = 0; // Дни, когда вы сможете покупать корм


        for(int i = money; (i-foodPerDay) >= 0; i = i - foodPerDay) {

            days = days + 3;  // Здесь опишите цикл, начинаем с 500 рублей
            // Опишите строку вывода
            System.out.println("На " + days + "-й день останется " + (i - 100) + " рублей");
        }// Цикл оканчивается здесь

        System.out.println("Денег хватит на " + days + " дней.");
    }
}
→ Ссылка