經典入門練習:使用 Scanner 獲取商品信息,計算總價、找零,並按表格格式輸出消費單。
package card;
import java.util.Scanner;
public class Shoping {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("依次輸入購買物品:名稱 單價 個數(共3件)");
// 商品 1
String name1 = input.next();
float price1 = input.nextFloat();
int num1 = input.nextInt();
float sum1 = price1 * num1;
// 商品 2
String name2 = input.next();
float price2 = input.nextFloat();
int num2 = input.nextInt();
float sum2 = price2 * num2;
// 商品 3
String name3 = input.next();
float price3 = input.nextFloat();
int num3 = input.nextInt();
float sum3 = price3 * num3;
System.out.print("實際交費:");
float money = input.nextFloat();
float allSum = sum1 + sum2 + sum3;
float change = money - allSum;
if (change < 0) {
System.out.println("\t\t金額不足,支付失敗");
} else {
System.out.println("************消費單************");
System.out.println("購買物品\t單價\t個數\t金額");
System.out.println(name1 + "\t" + price1 + "\t" + num1 + "\t" + sum1);
System.out.println(name2 + "\t" + price2 + "\t" + num2 + "\t" + sum2);
System.out.println(name3 + "\t" + price3 + "\t" + num3 + "\t" + sum3);
System.out.println("============================");
System.out.println("消費總金額\t\t\t" + allSum);
System.out.println("實際交費\t\t\t" + money);
System.out.println("找零\t\t\t" + change);
}
input.close();
}
}
Scanner.next() 讀取以空白分隔的 token(名稱不含空格);若名稱含空格需用 nextLine() 並處理換行符殘留。float 存儲金額**僅供練習**,實際項目**必須用 BigDecimal** 避免浮點誤差(如 0.1+0.2≠0.3)。change = money - total,負數提示失敗。\t 制表符簡單對齊;生產環境建議 System.out.printf("%-10s %8.2f %4d %10.2f%n", ...) 精確控制列寬。input.close() 釋放系統輸入流;JDK 7+ 推薦 try-with-resources 自動關閉。List<Product> 替換固定 3 件,循環錄入直到輸入 "end"。VipDiscountStrategy 接口,不同等級不同折扣算法。