我想为双变量设置一个限制

I would like to set a limit to a double variable

这部分程序是计算面对一个零件需要多长时间。 它从一些基本信息开始,工件直径、进给率和您希望工具操作的表面速度。然后它运行一个 while 循环,每次工具前进 0.010",它计算工件将旋转的新 rpm 并计算该切割的时间,最后将它们全部加起来。

问题:我需要能够限制转速。随着工具越来越接近工件的中心,rpm 将攀升到一个非常高的 rpm,我希望能够设置一个限制,例如 2000。

我不知道如何在不影响我的循环的情况下做到这一点...我已经搜索过了,但我是个菜鸟,也许我偶然发现了一个可行的解决方案,但从未意识到,或者我我没有在寻找正确的关键词。这是我的代码:

public static void main(String[] args) {
    double startRadius = 6; //Radius of stock diameter
    double faceFinish = 0; 
    double feed = .010; //Amount the tool will advance per revolution
    double sfm = 200; //Surface speed of tool (Surface feet per minute)
    double rpm = 0;
    double totalTime = 0;

    while(faceFinish < startRadius) {
        startRadius -= feed; //reduces diameter by feed
        rpm = (sfm * 3.82) / (startRadius * 2); //establishes new rpm per tool advance            
        totalTime += (feed / (feed * rpm)) * 60;
    }
    int hours = (int) (totalTime / 3600);
    int minutes = (int) ((totalTime % 3600) / 60);
    int seconds = (int) (totalTime % 60);
    System.out.printf("%02d:%02d:%02d\n", hours, minutes, seconds);
}

编辑 - If/else 这似乎有效。

public static void main(String[] args) {
    double startRadius = 6;
    double faceFinish = 0;
    double feed = .010;
    double sfm = 200;
    double rpm = 0;
    double rpm2 = 0;
    double total = 0;
    double total2 = 0;
    double totalTime = 0;

    while(faceFinish < startRadius) {
        startRadius -= feed; 
        rpm = (sfm * 3.82) / (startRadius * 2);             
        if(rpm > 2000) {
            rpm = 2000;
            total += (feed / (feed * rpm)) * 60;
        }else {
            total2 += (feed / (feed * rpm)) * 60;
        }
    totalTime = total + total2;

    }
    int hours = (int) (totalTime / 3600);
    int minutes = (int) ((totalTime % 3600) / 60);
    int seconds = (int) (totalTime % 60);
    System.out.printf("%02d:%02d:%02d\n", hours, minutes, seconds);
}

请尝试以下代码。

class Rpm{
    double value=0.0;
    final double LIMIT = 2000.0;
    public void setValue(double value){
        if(value < LIMIT)
            this.value= value;

    }
    public double getValue(){
        return this.value;
    }
}

public class  yourclassname {
public static void main(String[] args) {
    double startRadius = 6; //Radius of stock diameter
    double faceFinish = 0; 
    double feed = .010; //Amount the tool will advance per revolution
    double sfm = 200; //Surface speed of tool (Surface feet per minute)
    Rpm rpm = new Rpm();
    double totalTime = 0;

    while(faceFinish < startRadius) {
        startRadius -= feed; //reduces diameter by feed
        rpm.setValue( (sfm * 3.82) / (startRadius * 2)); //establishes new rpm per tool advance            
        totalTime += (feed / (feed * rpm.getValue())) * 60;
    }
    int hours = (int) (totalTime / 3600);
    int minutes = (int) ((totalTime % 3600) / 60);
    int seconds = (int) (totalTime % 60);
    System.out.printf("%02d:%02d:%02d\n", hours, minutes, seconds);
}
}

将下面的代码片段用于您正在使用的 while 循环

    while(faceFinish < startRadius) {
    startRadius -= feed; //reduces diameter by feed
    rpm = ((sfm * 3.82) / (startRadius * 2))>2000?2000:((sfm * 3.82) / (startRadius * 2));
    totalTime += (feed / (feed * rpm)) * 60;
}