【问题标题】:.class expected in Java?.class 期望在 Java 中?
【发布时间】:2024-01-19 18:13:01
【问题描述】:

我正在尝试为我的扫描仪获取下一个字符。

我的构造函数是:

    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()"

有什么想法吗?

【问题讨论】:

  • char temp = char (data); 你认为这有什么作用?为什么?
  • 我试图将数据变量转换为 char,因为 read() 返回一个 int
  • 正如@SotiriosDelimanolis 暗示的那样,您正在尝试执行强制转换,但使用的语法不正确。 char temp = (char) 数据。尽管其余的代码很有趣,但这应该可以解决这个特定的难题。

标签: java char java.util.scanner lexical-analysis


【解决方案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();
}

【讨论】:

    【解决方案2】:
    private void getNextChar() throws IOException
    {
        int data = in.read(); 
        char temp = (char) data;
        currentChar = temp;
    }
    

    转换应该像这样进行:char temp = (char) data;

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

    【讨论】: