Nhập hàng
Thuộc phần Logic và luồng chương trình trong hành trình Kotlin của Coddy. Bài học 56 trên 63.
Xây dựng chương trình quản lý hàng tồn kho để nhập và bán hàng, kiểm tra số lượng và tạo báo cáo. Mỗi giai đoạn mở rộng cùng một bộ xử lý lệnh. Phân tích các trường của lệnh, xác thực số lượng trước khi thay đổi bản đồ và trả về một phản hồi cho mỗi lệnh. Đầu vào không hợp lệ không được làm thay đổi lượng hàng tồn kho.
val fields = "ADD|pen|3".split("|")Thử thách
KhóHoàn thiện runInventory với tham số commands: List<String>. Tạo một kho hàng bắt đầu trống trong mỗi lần gọi hàm. Mỗi lệnh là một chuỗi có các trường được phân tách bằng |. Tên mặt hàng là các từ ASCII viết thường. Có tối đa 100 lệnh. Tách mỗi lệnh theo dấu phân tách cố định; các lệnh luôn có đúng số trường tương ứng với thao tác. Trả về một phản hồi cho mỗi lệnh. Cắt khoảng trắng ở hai đầu số lượng trước khi phân tích; số lượng hợp lệ nằm trong khoảng từ 0 đến 1000. Văn bản số không hợp lệ, văn bản nằm ngoài phạm vi của Int, số lượng âm hoặc số lượng lớn hơn 1000 sẽ tạo ra invalid mà không làm thay đổi trạng thái. Hỗ trợ ADD|item|quantity: thêm số lượng hợp lệ vào lượng hàng tồn của mặt hàng đó, ban đầu bằng không, rồi trả lời added. Thêm số không vẫn tạo mặt hàng. Đầu vào chỉ sử dụng các thao tác được hỗ trợ ở bước này.
Trừ khi có giới hạn chặt hơn được nêu ở trên, mỗi cấp của bộ sưu tập chứa tối đa 100 phần tử, và các đối số số nguyên cùng các giá trị số nguyên trong bộ sưu tập nằm trong khoảng từ -1000 đến 1000. Văn bản cần phân tích có thể chứa các dạng biểu diễn không hợp lệ hoặc nằm ngoài phạm vi như đã mô tả.
Trả về giá trị thuộc kiểu List<String>. Giữ nguyên code đầu vào/đầu ra được cung cấp. Code này đọc mỗi đối số đơn lẻ trên một dòng; danh sách bắt đầu bằng số lượng phần tử, sau đó là các phần tử, còn bản đồ bắt đầu bằng số lượng mục, sau đó là từng khóa và giá trị. Danh sách lồng nhau lặp lại định dạng số lượng và phần tử cho mỗi hàng. main được cung cấp sẽ in giá trị trả về rồi xuống dòng một lần. Danh sách sử dụng định dạng chuẩn có dấu ngoặc vuông của Kotlin; không in thêm nhãn.
Tự làm thử
fun runInventory(commands: List<String>): List<String> {
// Viết lời giải của bạn tại đây.
return emptyList()
}
fun main() {
val commandsCount = readln().toInt()
val commands = mutableListOf<String>()
for (i0 in 0 until commandsCount) {
val commandsItem = readLine().orEmpty()
commands.add(commandsItem)
}
println(runInventory(commands))
}Tất cả bài học trong Logic và luồng chương trình
4Các tập hợp lồng nhau
Danh sách các danh sáchDuyệt qua các hàngTóm tắt từng hàngLàm phẳng danh sách lồng nhauÔn tập: Các hàng ghế3Tập hợp và phép kiểm tra thành viên
Tạo tập hợpCập nhật tập hợpCác phép toán trên tập hợpKiểm tra tập conÔn tập: Khách mời sự kiện6Giá trị hàm
Viết biểu thức lambdaCác kiểu hàmTruyền hàmBiến được captureÔn tập: Điểm số có thể tùy chỉnh9Luồng điều khiển nâng cao
Mệnh đề bảo vệThoát khỏi vòng lặp có nhãnTiếp tục vòng lặp có nhãnHàm đệ quyÔn tập: hàng hợp lệ đầu tiên12Dự án: Quản lý kho
Nhập hàngKiểm tra hàng tồn khoTự luyện tập: Playground Kotlin