2013-09-26 50 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