我想为双变量设置一个限制
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;
}
这部分程序是计算面对一个零件需要多长时间。 它从一些基本信息开始,工件直径、进给率和您希望工具操作的表面速度。然后它运行一个 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;
}