如何在不使用字符串的情况下在java中获取输入?

时间:2014-01-25 15:55:17

标签: java

所以我试图实现一个非常简单的程序。

我想将bobi设置为变量但不使用字符串。我想我只能用char来做。

这是我到目前为止所拥有的

System.out.println("Please Enter a four letter name");
char n =
char a = 
char m = 
char e =
System.out.print("His name is ");
System.out.print(n);
System.out.print(a);
System.out.print(m);
System.out.print(e);

我所拥有的程序是

your program: Enter four letter name:
user: b
user: o
user: b
user: i

我希望能够输入一个输入 所以就像这样

 program: Enter four letter name:
 user: bobi

还是有更好的方法来解决

2 个答案:

答案 0 :(得分:3)

System.in流是此处的关键。您需要阅读每个byte,然后通过explicit castchar进行操作。

char n = (char)System.in.read();
char a = (char)System.in.read();

// And so on.

阅读材料,以便您理解

  • 在Java中使用System.in功能。点击here

  • Explicit Casts中的课程。点击here

答案 1 :(得分:1)

当然可以从System.in读取原始数据:

char[] name = new char[4];
try {
    char c;
    int i = 0;
    while((c = (char)System.in.read()) != '\n') {
        if(i < name.length)
            name[i++] = c;
    }
} catch(IOException ioe) {}

有几个笔记:

  • System.in以新行字符(来自用户按'enter')终止,与其他流为null或-1终止的流不同。
  • System.in应与UTF-8兼容。它可能与系统属性file.encoding相同。我找不到这样说的官方消息来源,但无论如何你只能将它转换为char。 This question似乎也暗示兼容性也会成为其他读者的问题。

请注意,这可能并不简单。与使用Scanner比较:

String line = new Scanner(System.in).nextLine();
if(line.length() > 4)
    line = line.substring(0, 4);

对于这两种情况,除非用户输入后输入,否则无法控制用户输入的内容。你要求一个4个字符的名字,但他们可以输入“乔布朗”,他们可以不输入任何内容。