Java 控制流语句。要多少年才能实现目标

Java 控制流语句。要多少年才能实现目标,java,Java,我想解决这个任务,不幸的是我停在这里:也许我用int计算,但应该用double计算 彼得把钱存入银行。银行每年把彼得的存款增加%。彼得想知道他在银行的存款要多少年才能达到目标金额 测试输入:100 15 120 正确输出:2 您的代码输出:1您应该将年份初始化为0,而不是-1: int years =0; 代码的问题是,您将年份设置为-1,而不是0。这就是为什么代码输出的计数比预期的计数少一个。我已经相应地更新了您的代码,使其产生预期的输出。请在下面找到。如果你有问题,请告诉我 import

我想解决这个任务,不幸的是我停在这里:也许我用
int
计算,但应该用
double
计算

彼得把钱存入银行。银行每年把彼得的存款增加%。彼得想知道他在银行的存款要多少年才能达到目标金额

测试输入:100 15 120

正确输出:2


您的代码输出:1

您应该将年份初始化为0,而不是-1:

 int years =0;

代码的问题是,您将年份设置为-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);
    }
}
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
公共类Stackoverflow_053120
{
静态BufferedReader in=新的BufferedReader(新的InputStreamReader(System.in));
公共静态void main(字符串args[])引发NumberFormatException,IOException
{
int money=Integer.parseInt(in.readLine());
int percent=Integer.parseInt(in.readLine());
int-goal=Integer.parseInt(in.readLine());
整数年=0;
而(金钱<目标)
{
货币=(货币*(100+)/100;
年++;
}
系统输出打印单位(年);
}
}
导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
公共类Stackoverflow_053120
{
静态BufferedReader in=新的BufferedReader(新的InputStreamReader(System.in));
公共静态void main(字符串args[])引发NumberFormatException,IOException
{
System.out.println(“输入货币、百分比和目标”);
字符串输入[]=in.readLine().split(“”);
int money=Integer.parseInt(输入[0]);
int percent=Integer.parseInt(输入[1]);
int目标=Integer.parseInt(输入[2]);
整数年=0;
而(金钱<目标)
{
货币=(货币*(100+)/100;
年++;
}
系统输出打印单位(年);
}
}

尝试进行如下所示的更改

int years = 0;
while (goal > money) {
    money = money + money * (percent / 100);
    ++years;
}

我试过你的代码,但当我输入1100,8时,我得到一个错误。线程“main”java.lang.NumberFormatException中的异常:对于输入字符串:java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)java.base/java.lang.Integer.parseInt(Integer.java:652)java.base/java.lang.Integer.parseInt(Integer.java:770)main.main(main.java:8)这是因为您在同一行输入所有输入。如果要求在同一行上获取所有输入,您可以尝试运行修改后的代码,我正在另一个答案中添加该代码。让我知道这是否有效。你收到了哪个错误,我运行了代码,它正在运行fine@ThomasLazer需要进行两次更改1)年份变量需要初始化为0。2) 而循环应该仅在货币价值小于目标金额时执行。
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);
    }
}
int years = 0;
while (goal > money) {
    money = money + money * (percent / 100);
    ++years;
}