第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

“錯(cuò)誤:預(yù)期為'.class'”是什么意思,我該如何解決

“錯(cuò)誤:預(yù)期為'.class'”是什么意思,我該如何解決

有時(shí),新用戶會遇到以下相當(dāng)晦澀的編譯錯(cuò)誤'.class' expected:double d = 1.9;int i = int d;  // error here         ^error: '.class' expected一些Java IDE編譯器對此略有不同。例如,error: insert ". class" to complete Expression 這樣的錯(cuò)誤實(shí)際上意味著什么,是什么原因?qū)е碌?,以及如何解決它們?
查看完整描述

2 回答

?
白板的微信

TA貢獻(xiàn)1883條經(jīng)驗(yàn) 獲得超3個(gè)贊

首先,這是一個(gè)編譯錯(cuò)誤。如果在運(yùn)行時(shí)看到該消息,則可能是正在運(yùn)行的代碼具有編譯錯(cuò)誤。


以下是錯(cuò)誤的幾個(gè)示例:


double d = 1.9;

int i = int d;  // error here

         ^


int j = someFunction(int[] a);  // error here

                       ^

在這兩種情況下,編譯器錯(cuò)誤消息均為error: '.class' expected。


錯(cuò)誤消息是什么意思,原因是什么?

坦率地說,編譯器在語法檢查過程中被一些毫無意義的代碼弄糊涂了。編譯器在實(shí)際期望表達(dá)式的上下文中遇到了類型(例如int或int[])。這就是說,在此.之后在語法上唯一可以接受的符號將是class。


這是該語法正確的示例。


Class<?> clazz = int;         // incorrect

Class<?> clazz = int.class;   // correct!

注意:應(yīng)該總是有可能弄清楚為什么編譯器的語法檢查器認(rèn)為類型應(yīng)該是表達(dá)式。但是,將其視為“編譯器已混淆”并查找引起混淆的(不可避免的!)語法錯(cuò)誤通常更簡單。對于初學(xué)者來說,語法錯(cuò)誤可能并不明顯……但是知道這是根本原因是一個(gè)好的開始。


您如何解決?

不幸的是,添加的“建議” .class幾乎總是不正確的。在本答案開頭的兩個(gè)示例中,它當(dāng)然無濟(jì)于事!


實(shí)際的修復(fù)方法取決于您將類型放在此處以達(dá)到的目的。


如果您打算編寫一個(gè)類型轉(zhuǎn)換,則需要在該類型周圍加上括號(圓括號)。例如


double d = 1.9;

int i = (int) d;   // Correct: casts `1.9` to an integer

如果您只是打算按原樣分配值或傳遞參數(shù),則應(yīng)刪除類型。


int j = someFunction(a);  // Correct ... assuming that the type of

                          // 'a' is suitable for that call.

聲明方法時(shí),需要指定形式參數(shù)的類型。但是您通常不需要為實(shí)際參數(shù)指定它。在少數(shù)情況下(為了解決過載歧義),請使用類型強(qiáng)制轉(zhuǎn)換。


更多例子

someMethod(array[]);

報(bào)告錯(cuò)誤,array[]因?yàn)樗穷愋投皇潜磉_(dá)式。更正可能是:


someMethod(array);                  // pass ref to the entire array

要么


someMethod(array[someExpression]);  // pass a single array element

int i = someMethod(int j); 

程序員已將參數(shù)聲明放入方法調(diào)用中。這里需要一個(gè)表達(dá)式,而不是一個(gè)聲明:


int i = someMethod(j);

int i = int(2.0);

程序員正在嘗試進(jìn)行類型轉(zhuǎn)換。應(yīng)該這樣寫:


int i = (int) 2.0;

int[]; letterCount = new int[26];

程序員添加了一個(gè)虛假的分號。應(yīng)該這樣寫:


int[] letterCount = new int[26];

if (someArray[] > 80) {

    // ...

}

的someArray[]表示類型不是表達(dá)式。程序員可能表示類似someArray[someIndex] > 80或的意思someArray.length > 80。


if ((withdraw % 5 == 0) && (acnt_balc >= withdraw + 0.50))

    double cur = acnt_balc - (withdraw + 0.50);

    System.out.println(cur);

else

    System.out.println(acnt_balc);

這里的錯(cuò)誤是“ then”語句周圍應(yīng)該有花括號。


if ((withdraw % 5 == 0) && (acnt_balc >= withdraw + 0.50)) {

    double cur = acnt_balc - (withdraw + 0.50);

    System.out.println(cur);

} else {

    System.out.println(acnt_balc);

}

但是編譯器的困惑是“ if”的“ then”子句不能是變量聲明。因此,解析器正在尋找一個(gè)可能是方法調(diào)用的表達(dá)式。例如,以下內(nèi)容在本地語法上是有效的:


if ((withdraw % 5 == 0) && (acnt_balc >= withdraw + 0.50))

    double.class.newInstance();   // no compilation error here

...盡管就其嘗試而言是荒謬的。當(dāng)然,然后編譯器會越過懸空else。


查看完整回答
反對 回復(fù) 2019-10-22
?
婷婷同學(xué)_

TA貢獻(xiàn)1844條經(jīng)驗(yàn) 獲得超8個(gè)贊

我不買。這個(gè)問題是關(guān)于解決一個(gè)非常特定的編譯器錯(cuò)誤。如果我們開始嘗試解決其他錯(cuò)誤消息,則:1)Q&A失去了重點(diǎn),2)人們無論如何都找不到它……因?yàn)樵換被設(shè)計(jì)為谷歌搜索編譯錯(cuò)誤消息的人發(fā)現(xiàn)。

查看完整回答
反對 回復(fù) 2019-10-22
  • 2 回答
  • 0 關(guān)注
  • 2194 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號