首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 控制台購物車結算小程序:輸入、計算、找零與格式化輸出實戰

     編輯:Java 綜合教學

Java 控制台購物車結算小程序

經典入門練習:使用 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();
    }
}

關鍵知識點

  1. Scanner.next() 讀取以空白分隔的 token(名稱不含空格);若名稱含空格需用 nextLine() 並處理換行符殘留。
  2. float 存儲金額**僅供練習**,實際項目**必須用 BigDecimal** 避免浮點誤差(如 0.1+0.2≠0.3)。
  3. 找零邏輯:change = money - total,負數提示失敗。
  4. 表格輸出:使用 \t 制表符簡單對齊;生產環境建議 System.out.printf("%-10s %8.2f %4d %10.2f%n", ...) 精確控制列寬。
  5. 資源關閉:input.close() 釋放系統輸入流;JDK 7+ 推薦 try-with-resources 自動關閉。

擴展練習方向

  • 動態商品數量:用 List<Product> 替換固定 3 件,循環錄入直到輸入 "end"。
  • 會員折扣:引入 VipDiscountStrategy 接口,不同等級不同折扣算法。
  • 多支付方式:現金/微信/支付寶,策略模式封裝支付邏輯。
  • 持久化:將消費單寫入文件/數據庫,支持查詢導出。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved