【发布时间】:2016-09-04 21:25:55
【问题描述】:
为了使第一个 If-Else 语句起作用,我必须用“= 0”初始化“quantity”和“productNo”变量。这没有在作业中指定。是否有另一种方法可以在不初始化变量的情况下使 If-Else 工作?
如果需要,第一个 If 语句允许用户在程序的第一个提示符处输入标记“-1”以退出(这是提示文本的一部分)。程序末尾的第二条 If-Else 语句允许用户在任何时候使用哨兵值退出。
这是一个计算订单零售总额的 Java 应用程序 选择购买的产品和数量。有 5 种产品,每单位有 5 个不变成本。用户输入产品编号,然后输入数量。输出是产品编号、订购数量、生产线成本和订单总额。它的标记值为“-1”,输入时允许用户退出程序。
import java.util.Scanner;
public class Program3
{
public static void main(String[] args)
{
final double COST_PROD1 = 2.98, COST_PROD2 = 4.50,
COST_PROD3 = 9.98, COST_PROD4 = 4.49, COST_PROD5 = 6.87;
int productNo = 0;
int quantity = 0;
double lineAmount = 0;
double orderAmount = 0;
Scanner inputDevice = new Scanner(System.in);
System.out.print("Enter Product No. (1-5) or -1 to Quit: >> ");
productNo = inputDevice.nextInt();
if (productNo == -1)
{
System.out.println("You have entered -1. You have exited the program.");
System.out.println("Order grand total = $0.00");
}
else
{
System.out.print("Please enter unit quantity >> ");
quantity = inputDevice.nextInt();
}
while(productNo != -1)
{
switch(productNo)
{
case 1:
lineAmount = quantity * COST_PROD1;
orderAmount += lineAmount;
System.out.println("Product -- " + "Quantity -- " + "Line Cost -- "
+ "Total Order");
System.out.println(" " + productNo + " " + quantity +
" " + lineAmount + " " + orderAmount);
break;
case 2:
lineAmount = quantity * COST_PROD2;
orderAmount += lineAmount;
System.out.println("Product -- " + "Quantity -- " + "Line Cost -- "
+ "Total Order");
System.out.println(" " + productNo + " " + quantity +
" " + lineAmount + " " + orderAmount);
break;
case 3:
lineAmount = quantity * COST_PROD3;
orderAmount += lineAmount;
System.out.println("Product -- " + "Quantity -- " + "Line Cost -- "
+ "Total Order");
System.out.println(" " + productNo + " " + quantity +
" " + lineAmount + " " + orderAmount);
break;
case 4:
lineAmount = quantity * COST_PROD4;
orderAmount += lineAmount;
System.out.println("Product -- " + "Quantity -- " + "Line Cost -- "
+ "Total Order");
System.out.println(" " + productNo + " " + quantity +
" " + lineAmount + " " + orderAmount);
break;
case 5:
lineAmount = quantity * COST_PROD5;
orderAmount += lineAmount;
System.out.println("Product -- " + "Quantity -- " + "Line Cost -- "
+ "Total Order");
System.out.println(" " + productNo + " " + quantity +
" " + lineAmount + " " + orderAmount); ;
break;
default:
System.out.println("You have entered an invalid product number.
Try again.");
break;
}//end switch
System.out.print("Enter Product No. (1-5) or -1 to Quit: >> ");
productNo = inputDevice.nextInt();
if (productNo == -1)
{
System.out.println("You have entered -1. You have exited the
program.");
System.out.println("Order grand total..." + orderAmount);
}
else
{
System.out.print("Please enter unit quantity >> ");
quantity = inputDevice.nextInt();
}
} // end while
} // end main
} // end class
【问题讨论】:
-
在
if的第一部分设置quantity = 0。否则它可能永远不会被初始化。 -
您也可以在
main方法之外将它们定义为static:static private double orderAmount; private static int quantity;。 -
@shmosel If 语句中的“quantity = 0”应该在哪里?当我把它放在那里时,它会将 productNo 的第一个提示设置为“-1”。
标签: java if-statement