Я хотел бы решить эту задачу, к сожалению, я остановился на этом: Может быть, я рассчитал в int, но должен в double?

Питер положил деньги в банк. Банк увеличивает вклад Питера на проценты каждый год. Питер хочет знать, сколько должно пройти лет, пока его депозит в банке не достигнет цели денег.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // write your code here
        Scanner myobject = new Scanner(System.in);
        double money = myobject.nextDouble();
        double percent = myobject.nextDouble();
        double goal = myobject.nextDouble();
        int years = -1;
        while (goal >= money) {
            money = money + money * (percent / 100);
            ++years;
        }
        System.out.println(years);
    }
}

Тестовый ввод: 100 15 120

Правильный вывод: 2

Ваш вывод кода: 1

-1
Peter 31 Май 2020 в 11:15

4 ответа

Лучший ответ

Попробуйте внести изменения, как показано ниже.

int years = 0;
while (goal > money) {
    money = money + money * (percent / 100);
    ++years;
}
2
Sreejith 31 Май 2020 в 08:57

Вы должны инициализировать годы до 0 вместо -1:

 int years =0;
1
Thomas Lazer 31 Май 2020 в 08:38

Проблема с вашим кодом состоит в том, что вы установили годы на -1 вместо 0. Поэтому ваши выходные данные кода на один меньше ожидаемого. Я обновил ваш код соответственно, чтобы он дал ожидаемый результат. Пожалуйста, найдите это ниже. Дайте мне знать, если у вас есть вопросы.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Stackoverflow_053120 
{
    static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    public static void main(String args[]) throws NumberFormatException, IOException
    {
        int money = Integer.parseInt(in.readLine());
        int percent = Integer.parseInt(in.readLine());
        int goal = Integer.parseInt(in.readLine());

        int years = 0;
        while(money < goal)
        {
            money = (money * (100+percent)) / 100;
            years++;
        }
        System.out.println(years);
    }
}
1
Akash Nigam 31 Май 2020 в 08:41
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Stackoverflow_053120 
{
    static BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    public static void main(String args[]) throws NumberFormatException, IOException
    {
        System.out.println("Enter money, percent and goal");
        String input[] = in.readLine().split(" ");
        int money = Integer.parseInt(input[0]);
        int percent = Integer.parseInt(input[1]);
        int goal = Integer.parseInt(input[2]);

        int years = 0;
        while(money < goal)
        {
            money = (money * (100+percent)) / 100;
            years++;
        }
        System.out.println(years);
    }
}
0
Akash Nigam 31 Май 2020 в 08:53