2014-08-29 62 views
-1

我想为我的扫描仪获取下一个字符。.class?

我的构造函数是:

public S(InputStream inStream) 
    { 
     in = new BufferedReader(new InputStreamReader(inStream)); 
     e = false; // if input stream is done 
     getNextChar(); 
    } 

我的方法就是:

private void getNextChar() 
{ 
     int data = in.read(); 
     char temp = char (data); 
     currentChar = temp; 
} 

我得到一个'.class' expected error in "getNextChar()"

任何想法,为什么?

+1

'char temp = char(data);'你认为那是什么?为什么? – 2014-08-29 18:48:45

+0

我试图将数据变量转换为char,因为read()返回int – Surz 2014-08-29 18:49:50

+3

正如@SotiriosDelimanolis所暗示的,您正在尝试执行转换,但使用的语法不正确。 char temp =(char)数据。尽管其他代码很有趣,但它应该解决这个特定的难题。 – TEK 2014-08-29 18:50:25

回答

0
private void getNextChar() throws IOException 
{ 
    int data = in.read(); 
    char temp = (char) data; 
    currentChar = temp; 
} 

铸造应该像这样完成:char temp =(char)data;

不是这样的:char temp = char(data);

1

个人而言,我想知道为什么你有一个void get方法。然后,我看到两个不必要的临时和在铸造一个令人担忧的尝试,

private void getNextChar() { 
    int data = in.read(); 
    char temp = char (data); 
    currentChar = temp; 
} 

假设你真的想还设置currentChar,你可以这样做

private char getNextChar() { 
    return currentChar = (char) in.read(); // <-- chaining assignment 
} 

或者是(相当于链版本)

private char getNextChar() { 
    currentChar = (char) in.read(); 
    return currentChat; 
} 

或远更典型的情况是将跳过currentChar干脆,

private char getNextChar() { 
    return (char) in.read(); 
}