-1

我想读取一个字符并将其存储到char[]数组中,这是我的方法称为getaline

public static int getaline(char message[], int maxlength)
{
     int index = 0;
     while (message[index] != '\n')
     {
         message[index] = fgetc(System.out);
         index++;
     }
     index++;
}

和我的fgetc方法:

public static int fgetc(InputStream stream)

这个方法应该从输入流中返回一个字符。

但是我在编译时不断收到一条错误消息:

错误:可能的精度损失

message[index] = fgetc(System.in);
                       ^
required: char

found:    int

我应该在里面放什么fgetc以便我可以收集用户的输入?

4

1 回答 1

5

您的代码需要 a char,但您在int此处返回 a :

public static int fgetc(InputStream stream)
//            ↑ tells method will return an int

你可以

  • 更改方法签名以返回char.

    public static char fgetc(InputStream stream)
    //            ↑ tells method will return a char
    
  • 将返回值转换为char

    强制转换第 5.5 节)将表达式的类型转换为由强制转换运算符(第 15.16 节)显式指定的类型。

    message[index] = (char) fgetc(System.in);
    //               ↑ cast returning value to a char
    
于 2015-09-30T08:47:28.190 回答