最初のIf-Elseステートメントを機能させるために、 "quantity"と "productNo"変数を "= 0"で初期化しなければなりませんでした。これは割り当てに指定されていませんでした。変数を初期化せずにIf-Elseの作業を行う別の方法はありますか?If-Elseは変数の初期化が必要です
最初のIfステートメントでは、プログラムの最初のプロンプトにセンチネル "-1"を入力することができます(プロンプトテキストの一部です)。プログラム終了時の2番目の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'を設定します。そうしないと、決して初期化されないことがあります。 – shmosel
'main'メソッドの外側で' static'として定義することもできます: 'static private double orderAmount;プライベート静的int量; '。 – DimaSan
@shmosel Ifステートメントでは、「数量= 0」を指定する必要がありますか?そこに配置すると、productNoの最初のプロンプトが「-1」に設定されます。 – HerdingDogRescuer