2016-01-16 39 views
1

我是一個非常新的程序員,我剛剛瞭解了掃描儀,但我試圖找到一種方法來實現這一點,當我按下向上或向下鍵時,它會循環顯示選項,並在前面瞭解它是目前選擇的選項。如果使用掃描儀不是int,我怎麼能不允許用戶輸入?

這是提示:

What would you like to do: 
Attack 
Inventory 
Stats 
Flee 

我想它在所選擇的一個的前面的箭頭和改變選擇與向上和向下箭頭鍵。因此,例如,只要將提示您它看起來像這樣:

你想做些什麼:

What would you like to do: 
> Attack 
Inventory 
Stats 
Flee 

如果你按了向下箭頭鍵兩次:

What would you like to do: 
Attack 
Inventory 
> Stats 
Flee 

所以我現在的代碼如下所示:

public class Prompter { 

    Scanner input = new Scanner(System.in); 
    public int options() throws IOException { 
     System.out.printf("What would you like to do:%nAttack %n Inventory %n Stats %n Flee %n"); 
     while (!input.hasNextInt()) input.next(); 
     int choice = input.nextInt(); 
     System.out.printf("Choice: %d", choice); 
    return choice; 
    } 
} 

它現在所做的是接受一個int輸入並返回i噸。

請不要給我一個巨大的代碼塊沒有解釋它,因爲我是一個非常新的程序員。謝謝!

+2

這不是控制檯程序的工作方式,而是主要在GUI程序(如JavaFx或Swing程序)中找到的行爲。例如,如果這是一個Swing GUI,我建議你使用'JComboBox '來做這件事。 –

+0

您可能想要查看使用JNI(Java Native Interface)的庫:https://github.com/kwhat/jnativehook – Ihsan

+0

也是Charva(http://www.pitman.co.za/projects/charva/ index.html)或JCurses(http://sourceforge.net/projects/javacurses/) –

回答

1

正如在評論中提到的那樣,不可能在控制檯中輕鬆實現這樣的行爲。

一個簡單的解決方法可能是映射選項後面的數字。 (攻擊(1),庫存(2),..)和擴展你的代碼,如:

int inputChoice = input.nextInt(); 
String choice = ""; 
switch(inputChoice){ 
     case 1: choice = "Action"; 
     case 2: choice = "Inventory"; 
     // add cases 
} 
System.out.println("Choice: " +choice); 
return choice; // or inputChoice if you want to return an int value 

這不是做到這一點的最好辦法,但可能足以爲您的當前需要。