Menu
Coddy logo textTech

無効な入力の処理

CoddyのLuaジャーニー「Logic & Flow」セクションの一部 — レッスン 47/54。

challenge icon

チャレンジ

簡単

無効なメニューコマンドに対する適切な処理を追加して、連絡先リストアプリケーションを完成させましょう。ユーザーが利用可能なオプションのいずれにも一致しないコマンドを入力したとき、プログラムはそれを通知し、実行を継続する必要があります。

前のチャレンジをベースに、addlistsearchdelete、または quit のいずれでもないコマンドを処理するための else 条件を追加します。これにより、認識されないコマンドが入力されたときに明確なフィードバックが提供され、ユーザーエクスペリエンスが向上します。

要件:

  • 前のチャレンジのすべてのコード(セットアップ、メニュー表示、メインループ、追加、一覧表示、検索、削除機能)を保持してください。
  • 有効なオプションに一致しないコマンドを処理するための else 条件を追加してください。
  • 無効なコマンドが入力されたら、Invalid command. Please try again. と出力してください。
  • 無効なコマンドのメッセージを表示した後も、プログラムは実行を継続する必要があります。
  • 既存のすべてのコマンド(addlistsearchdeletequit)は、以前とまったく同じように動作する必要があります。

インタラクションの例:

Welcome to Contact List Manager!

Available Commands:
add - Add a new contact
list - Display all contacts
search - Search for a contact
delete - Delete a contact
quit - Exit the program

Enter command:
add
Enter name:
Alice
Enter phone number:
555-1234
Contact added successfully!

Enter command:
show
Invalid command. Please try again.

Enter command:
remove
Invalid command. Please try again.

Enter command:
list
Contact List:
1. Alice - 555-1234

Enter command:
help
Invalid command. Please try again.

Enter command:
quit
Goodbye!

自分で試してみよう

-- Contact List Manager with Delete Functionality
local contacts = {}

print("Welcome to Contact List Manager!")
print()
print("Available Commands:")
print("add - Add a new contact")
print("list - Display all contacts")
print("search - Search for a contact")
print("delete - Delete a contact")
print("quit - Exit the program")
print()

while true do
    print("Enter command:")
    local command = io.read()
    
    if command == "add" then
        print("Enter name:")
        local name = io.read()
        print("Enter phone number:")
        local phone = io.read()
        
        local contact = {name = name, phone = phone}
        table.insert(contacts, contact)
        print("Contact added successfully!")
        print()
        
    elseif command == "list" then
        if #contacts == 0 then
            print("No contacts available.")
        else
            print("Contact List:")
            for i, contact in ipairs(contacts) do
                print(i .. ". " .. contact.name .. " - " .. contact.phone)
            end
        end
        print()
        
    elseif command == "search" then
        print("Enter name to search:")
        local searchName = io.read()
        local found = false
        
        for i, contact in ipairs(contacts) do
            if contact.name == searchName then
                print("Found: " .. contact.name .. " - " .. contact.phone)
                found = true
                break
            end
        end
        
        if not found then
            print("Contact not found.")
        end
        print()
        
    elseif command == "delete" then
        print("Enter name to delete:")
        local deleteName = io.read()
        local found = false
        
        for i, contact in ipairs(contacts) do
            if contact.name == deleteName then
                table.remove(contacts, i)
                print("Contact deleted successfully!")
                found = true
                break
            end
        end
        
        if not found then
            print("Contact not found.")
        end
        print()
        
    elseif command == "quit" then
        print("Goodbye!")
        break
    end
end

Logic & Flowのすべてのレッスン