Java 根据用户输入以分数递增

Java 根据用户输入以分数递增,java,netbeans-7,Java,Netbeans 7,我遇到了麻烦,我需要接受一个用户输入,并从0开始将其增加1/10,因此如果用户输入5.2,我需要通过0.1 0.2 0.3等显示,并在5.2停止,直到再次调用该方法并输入一个新的输入,这就是我所拥有的,但它只运行到10,我理解它为什么这样做是不够的若能解决此问题,我们将不胜感激 import java.util.Scanner; public class SpeedChange { public double startSpeed; public double newSpe

我遇到了麻烦,我需要接受一个用户输入,并从0开始将其增加1/10,因此如果用户输入5.2,我需要通过0.1 0.2 0.3等显示,并在5.2停止,直到再次调用该方法并输入一个新的输入,这就是我所拥有的,但它只运行到10,我理解它为什么这样做是不够的若能解决此问题,我们将不胜感激

import java.util.Scanner;

public class SpeedChange {


    public double startSpeed;
    public double newSpeed;

    public void changeUserSpeed(){

        Scanner sc = new Scanner (System.in);
        System.out.println("How fast would you like to go between 1-10 mph?");
        double newSpeed = sc.nextDouble();
        for(newSpeed = sc.nextDouble(); newSpeed <= 10.00; newSpeed+=.1 ){
           System.out.println(newSpeed); 
        }
    }
}

您的代码应该是

    for(double speed=0; speed <= newSpeed; speed+=.1 ){
       System.out.println(speed); 
    }
注:双重/浮动不适合这种用途。使用BigDecimal类来执行此操作


有关详细信息,请参见

您需要更改循环内容。由于用户已指定了您的newSpeed,因此您无需更改它。您只需创建一个新的双变量,例如Speed,它将在每次迭代时以0.1的限值递增,并一直运行,直到您的速度等于newSpeed


我希望这能澄清并解决你的疑问

欢迎来到堆栈溢出!你试过什么?你可能想读一下:并且通过这样做还赢得了一枚徽章!我尝试了我发布的一个,而不是使用ifnewSpeed thanking@Eypros的for循环——它帮助我赢得了“知情”的铜牌!为什么浮动不足以解决这个问题?请用事实支持这一说法。这篇链接文章是关于货币或金融计算的,大概是在数据安全极其重要的背景下。我看不出这与这个问题有什么关系。谢谢你,这确实有效,但我显示了很多额外的小数点。00.10.20.3000000000000000040.40.50.60.70.7999999999999990.899999999等等。我怎样才能将显示减少到只有3个小数点?假设我只想显示前2-3个小数点,那么它就是。10.20.30.40.50.70之后的.60是.799999999990,通过输出有许多类似的输出,您可以使用双速度=0.3000000000;DecimalFormat newFormat=新的DecimalFormat。;double threeDecimal=double.valueOfnewFormat.formatd;希望有帮助,请将答案标记为已接受!谢谢@user3851819:谢谢你帮了我大忙,我已经花了几个小时来解决这个问题了
for(double Speed=0;Speed<=newSpeed;Speed+=0.1 ){
       System.out.println(Speed); }