2013-04-14 48 views
-1

我收到此錯誤消息:The value of the local variable chaine2 is not used本地變量chaine2的值未使用

代碼:

package com.example.Projet_java; 

public class MyFirstClass 
         { 
    public static void main(String[] args) { 
    { String chaine = new String("HELLO"), 
     chaine2 = new String(); 
     chaine2 = chaine.toLowerCase(); 
    } 
             } 
          } 

我試圖按照以下螺紋 Java error "Value of local variable is not used" 但沒有成功。

有人知道我該如何修復它嗎?

+0

這是您的IDE提供的一個指標,通知您在這種情況下您可能擁有無用變量'chaine2'。順便說一句,這不是一個編譯錯誤。 – Mik378

+1

你是如何閱讀該鏈接並不理解你的問題的? – syb0rg

+1

我從來沒有見過更可笑的支架放置,並且,不管你信不信,它都是*不是偶然的*。 –

回答

-2

這是一個警告,而不是錯誤。這是編譯器通知你,你創建你永遠不會使用的變量。這個變量是無用的,所以創建它沒有意義。如果您正在學習Java,那麼您可以忽略此警告,因爲它不會阻止您的代碼被編譯和執行。這只是給你一個提示:「嘿,你有一個你不用的變量!也許你錯過了什麼?」

+2

-1爲建議忽略警告。他們告訴你一些你應該注意的事情,特別是在你學習的時候。他們試圖告訴你,你做錯了一些事情;只是因爲它仍然編譯並運行並不能安全地忽略它。 (他們不應該被忽略 - 他們被稱爲*警告*而不是*提示*) –

+0

嗯,你是一個理想主義者:)事實上,有時你必須忽略編譯器警告 - 即當讀取序列化的集合來自ObjectInputStream。 「無法控制的轉換」警告你什麼都不能做。在我看來,學習Java時忽略'未使用'警告是很常見的:你創建了很多變量,這種警告無關緊要。 –

+0

然後你正在做出一個關於忽視警告的*知情決定。這不同於「你可以忽略警告」作爲一般性陳述,並且向一個明顯的初學者提供這些建議是絕對可怕的建議。 (他們不是所謂的「建議」或「提示」 - 選擇這個詞來標明它們是有潛在危險的。) –

-1

你的目標設定爲chaine2

chaine2 = new String(); 

但你覆蓋它的下一行,所以先前創建的空字符串不用於任何東西。

chaine2 = chaine.toLowerCase(); 

編譯器發現它奇數,由於第一線是沒用的,並警告您的情況下,它是一個邏輯錯誤(雖然它是一個正確的程序和編譯和正確運行)。

+0

即使'= new String()'被刪除,編譯器也會一直抱怨。 OP沒有以任何方式使用'chaine2'的值,無論是第一個還是第二個。 –

0
  1. chaine2 = new String()是多餘的。刪除那個。
  2. 您應該使用chaine2的值,而目前您還沒有。例如,打印出來。
0

這是chaine2 = new String();你分配一個新的String()chaine2,然後立即丟棄它,當你與chaine2 = chaine.toLowerCase();重新分配它的下一行。

+0

他也沒有使用第二個值。 –

+0

但是在'toLowerCase()'賦值之後使用它會使其失效;第一個將仍然存在。如果它不會在'toLowerCase()'後面使用,那麼整個代碼就變得毫無意義,你甚至不必費心編譯和運行它。 :-) –

+0

是的,你已經描述了它是如何。 –

0

The value of the local variable chaine2 is not used警告,而不是一個錯誤

你的IDE說你永遠不會使用變量chaine2,也就是說,你既不在其他操作中使用它,也不將它存儲在任何地方,也不在屏幕上打印它,也不會有任何東西......無論如何,你的代碼將運行!

儘管什麼在其他的答案被說的,警告是對事物非常有用的通知是可能導致錯誤,所以他們是非常有用的,而編程,因爲你的IDE會注意到的問題,你可能不會注意到。所以你不應該在學習Java時丟棄它們!


編輯:如果你想要做的,就是以小寫字符串「Hello」,不求了......你說對了!唯一的一點是你有它存儲在一個可變的chaine2,但你不用做任何事情...... 只要做:

System.out.println("Printing chaine2: " + chaine2); 

而且你會看到打印在控制檯上的結果。

+0

非常感謝您的回答!!並感謝大家對此警告的建議! – user1805

0

學習一種特定的語言,即使在開始時,也不應該讓一個程序員忘記仔細設計算法。你的算法應該始終是最優化的。

現代IDE幫助不要忘記;)=>一個無用的變量? (因爲你的情況,chaine2初始化後根本沒有使用)=>垃圾!

因此,即使對於簡單的「Hello World」算法,您也應該真正關注由您最喜愛的IDE(或其他來源)引發的任何警告。