使用int返回char的方法

时间:2015-09-30 10:42:37

标签: java input user-input fgetc

有人可以向我解释这个方法,为什么这会返回char而不是int ??

public static int fgetc(InputStream stream)
{
    char ToRet = '\0';
    if (InStream.isEmpty())
    {
         try
         {
              ToRet = (char) stream.read();
              if (ToRet == CR)
                    Toret = (char) stream.read();
              if ((int) ToRet == 0xFFFF)
                    return EOF;
         }
         catch (EOFException eof)
         {
               return EOF;
         }
         catch (IOException ioe)
         {
                writeline ("Unexpected IO Exception caught!\n", System.out);
                writeline (ioe.toString(),System.out);
         }
     }
     else
           ToRet = ((MYLibCharacter) Instream.pop ()).charValue();
return ToRet;
}

并且假设您希望存储用户输入的值作为字符,直到检测到换行符,

int index = 0;
while (message[index] != '\n\)
{
    message[index] = fgetc(System.in);
    index++;
}

为什么这是错的? 任何提示和帮助将不胜感激。

抱歉,这可能有点乱,请随时编辑或询问有关此帖子的任何问题。

1 个答案:

答案 0 :(得分:4)

char中的

Java(以及其他原始类型)与int类似。

As in JLS says

  

如果变量的类型是byte,short或char,则可以使用缩小的基元转换,并且常量表达式的值可以在变量的类型中表示。

my previous answeryour previous question中,您必须强制转换或更改返回类型,因为:

char c = 'A' + 1;
char c = 45;

char c = 'A';
c = c++;