如何解决正确使用void方法
import java.text.DecimalFormat;
import java.util.Scanner;
public class shippingCharges {
public static void main(String[] args) {
double inputWeight,inputDistance;
Scanner sc = new Scanner(System.in);
System.out.println("Enter the weight of the package in Kilograms between 0 - 50 exclusive: ");
inputWeight = sc.nextDouble();
while (inputWeight < 0.0 || inputWeight > 50.0) {
System.out.println("Weight must be between 0 - 50 exclusive. Enter the weight: ");
inputWeight = sc.nextDouble();
}
System.out.println("Enter the distance the package is to be shipped between 10 - 3000 inclusive: ");
inputDistance = sc.nextDouble();
while (inputDistance < 0 || inputDistance > 3000) {
System.out.println("Distance must be between 0 - 3000 exclusive. Enter the distance: ");
inputDistance = sc.nextDouble();
// Calling ShippingCost Method
shippingCost(inputWeight,inputDistance);
}
}
public static void shippingCost(double inputWeight,double inputDistance) {
// Declaring initial variables needed
double inputRate,blocks,total;
// Declaring named constants needed
final double RATE1 = 1.20,RATE2 = 2.20,RATE3 = 3.80,RATE4 = 4.80;
final double W1 = 2,W2 = 6,W3 = 10,W4 = 50;
final int DIS = 200;
Scanner sc = new Scanner(System.in);
DecimalFormat df = new DecimalFormat("0.00");
inputWeight = sc.nextDouble();
inputRate = sc.nextDouble();
inputDistance = sc.nextInt();
// Using an if-else statement to determine the rate of per 200 miles shipped
if (inputWeight <= W1)
inputRate = RATE1;
else if (inputWeight > W1 && W1 <= W2)
inputRate = RATE2;
else if (inputWeight > W2 && W2 <= W3)
inputRate = RATE3;
else if (inputWeight > W3 && W3 <= W4)
inputRate = RATE4;
// Calculating the number of 200 mile blocks using the built-in ceil() method and total
blocks = Math.ceil(inputDistance / DIS);
total = blocks * inputRate;
// Printing the Invoice Summary
System.out.println("\tThe shipping rate is: " + df.format(inputRate) + " per 200-mile shipped. ");
System.out.println("\tThere are " + blocks + " 200-mile blocks in " + inputDistance + "miles. ");
System.out.println("\tTotal = " + blocks + " x " + inputRate + " = " + total);
}
}
最近我的一门编程课程遇到了问题。这个问题看起来很简单,但我才刚刚开始。基本上,我试图将我正确创建的 void 方法调用到我的主方法程序中。但是,每次我运行该程序时,它都会显示 System.out.println()
,但是在我到达送货方式后会终止该程序。任何帮助都意味着一吨,谢谢。
解决方法
如果条件如下,如果将呼叫转移到 shippingCost 之外,则将 while 更改为会有所帮助
public static void main() {
System.out.println("Enter the weight of the package in Kilograms between 0 - 50 exclusive: ");
Scanner sc = new Scanner(System.in);
double inputWeight = sc.nextDouble();
if (inputWeight < 0.0 || inputWeight > 50.0) {
System.out.println("Weight must be between 0 - 50 exclusive. Enter the weight: ");
inputWeight = sc.nextDouble();
}
System.out.println("Enter the distance the package is to be shipped between 10 - 3000 inclusive: ");
double inputDistance = sc.nextDouble();
if (inputDistance < 0 || inputDistance > 3000) {
System.out.println("Distance must be between 0 - 3000 exclusive. Enter the distance: ");
inputDistance = sc.nextDouble();
}
//Calling ShippingCost Method
shippingCost(inputWeight,inputDistance);
}
,
当您到达 shippingCost Method 时,您再次接受用户输入:
inputWeight = sc.nextDouble();
inputRate = sc.nextDouble();
inputDistance = sc.nextInt();
您不需要这样做,因为您已经将这些值作为方法本身的输入(检查方法签名/参数)。只需从您的 shippingCost 方法中删除上述代码片段,然后您的代码就可以正常工作了。
此外,由于您没有获得 inputRate 变量的输入,只需在声明后立即初始化以下变量,在 shippingCost 方法中:
inputRate = 0.0;
问候。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。