簡體   English   中英

是否可以使用 java.util.Scanner 檢測單個輸入鍵?

[英]Is it possible detect single enterkey with java.util.Scanner?

我正在嘗試編寫一個基於終端的玩具應用程序,它允許用戶輸入產品類別和庫存。

是否可以實現按回車鍵輸入默認庫存的功能。

這是程序/步驟

  1. 應用打印“產品類別:”

  2. 用戶輸入一個類別,例如鞋子

  3. 應用程序打印“庫存(按回車鍵 999):”

  4. 用戶按回車鍵或輸入另一個數字

  5. 應用打印 product_category + product_inventory

這是我的代碼

import java.util.Scanner;

public class ProductScanner {

    public static void main(String[] args) {
        System.out.print("product category: ");
        Scanner scanner = new Scanner(System.in);
        String product_category = scanner.next();
        System.out.print("Inventory(press enter key for 999): ");
        int product_inventory = scanner.nextInt();
        scanner.close();
        System.out.println(String.format("%s, %d", product_category, product_inventory));
    }

}

此代碼不支持“默認回車鍵”功能。

問題

是否可以使用 java.util.Scanner 檢測單個 enterkey 以實現默認輸入?

我也試過這段代碼,更糟糕的是

導入 java.util.Scanner;

public class ProductScanner {

    public static void main(String[] args) {
        System.out.print("product category: ");
        Scanner scanner = new Scanner(System.in);
        String product_category = scanner.next();
        scanner.close();
        System.out.print("Inventory(press enter key for 999): ");
        scanner = new Scanner(System.in);
        String product_inventory_str = "999";
        if(scanner.hasNext()){
            System.out.println("hasNext");
            product_inventory_str = scanner.nextLine();
        }
        else{
            System.out.println("does not have Next");
        }

        int product_inventory = 999;
        if(product_inventory_str.isEmpty()){
            System.out.println("isEmpty");
        }
        else{
            product_inventory = Integer.parseInt(product_inventory_str);
        }
        scanner.close();
        System.out.println(String.format("%s, %d", product_category, product_inventory));
    }

}

您始終可以閱讀整行(因為用戶無論如何都必須按 Enter),然后決定如何處理它,如下所示:

public static void main(String[] args) {
    System.out.print("product category: ");
    Scanner scanner = new Scanner(System.in);
    String product_category = scanner.nextLine();
    System.out.print("Inventory(press enter key for 999): ");
    String pi_string = scanner.nextLine();
    int product_inventory = pi_string.isEmpty()?
        999:Integer.parseInt(pi_string);
    scanner.close();
    System.out.println(String.format("%s, %d",
        product_category, product_inventory));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM