2013-09-26 49 views
2

我正在嘗試使用Java編寫基於文本的小遊戲。我以前用C++寫過,但是我在C++中使用了「getch()」,我不知道java是什麼。我是相當新的,所以我不是很有經驗,但我能夠學習。在Java中是否有與Java的「getch()」相當的Java?它需要返回密鑰的ASCII值。想法?基於控制檯的密鑰監聽程序Java

+0

ASCII可能不是非常有用,因爲Java適用於UTF -16在內部。 – nfechner

+0

@nfechner我想使用ASCII,因爲我已經用ASCII值編碼了。我也可以給一個整數值賦值,即當某人按下esc鍵時,整數的值就是27.這就是我正在尋找的。 – space55

回答

0

一般來說,您可以從System.in中讀取輸入。你可以用很多方式從這個流中讀取數據,但有一個選擇是使用java.util.scanner。

試着這麼做:

import java.util.Scanner; 

Scanner keyboard = new Scanner(System.in); 
byte mybyte = keyboard.nextByte(); 

http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html

+0

所有準備嘗試。它不工作。 – space55

+0

@ space55如果您希望在不按下回車鍵的情況下按下按鈕來註冊它,我不認爲這在Java中是可行的。畢竟,java程序不擁有控制檯窗口。控制檯不是Java應用程序,Java只是與它交互,將輸出傳遞給它,並從中接收輸入。 – Cruncher

+0

這甚至可以在編譯器的命令窗口中使用嗎? – space55

0

您可能需要使用

InputStreamReader inStream = new InputStreamReader(System.in); 
int charValue = inStream.read(); 

然後從那裏上的字符值進行切換。

正如其他人提到的,Java在UTF-16上工作,但對於字符[a-zA-z0-9]和正常標點符號,您不會注意到其中的差異。對於使用InputStreamReader

的Javadoc:InputStreamReader Javadoc

+0

剛剛System.in.read();有什麼問題? – Cruncher

+0

你忘了兩個分號 – space55

+0

它給了我第二個「InputStreamReader」區域上的紅色下劃線 – space55

3

你可以使用一個BufferedReader複製的getch()

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class myclass 
{ 
    public static void main(String[] args) 
    { 

     BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("Press Enter to continue"); 
     try 
     { 
      int ascii = br.read(); 
      System.out.println("ASCII Value - "+ascii); 
     } 
     catch (IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 
} 

輸出

Enter any character to continue 
<press a then hit Enter> 
ASCII Value - 97 
+0

這應該真的說「按回車繼續」。它不適用於「任何關鍵」。 – Cruncher

+0

謝謝,代碼已更新。 –

+0

我需要一些能夠將ASCII值賦予按下的字符的東西。任何方式來做到這一點? – space55