2011-11-18 327 views
3

好吧,所以我有點新來的Java和我試圖做一個類,這將能夠要求用戶輸入一個12位長的upc代碼,檢查以確保其有效的代碼,然後顯示如果它是否。我目前的程序有很多錯誤,而且我似乎無法弄清楚。這是我到目前爲止的代碼:Java錯誤消息「無法解析爲變量」?

public class Upc { 
    private long upc; 

    public Upc(long upcs) { 
     upc = upcs; 
    } 

    public long getUpc() { 

     int m = (n2 + n4 + n6 + n8 + n10); 
     long n = (n1 + n3 + n5 + n7 + n9 + n11); 
     long r = (10 - (m + 3 * n) % 10); 

     long n12 = (int) (upc % 10); 
     upc /= 10; 
     long n11 = (int) (upc % 10); 
     upc /= 10; 
     long n10 = (int) (upc % 10); 
     upc /= 10; 
     long n9 = (int) (upc % 10); 
     upc /= 10; 
     long n8 = (int) (upc % 10); 
     upc /= 10; 
     long n7 = (int) (upc % 10); 
     upc /= 10; 
     long n6 = (int) (upc % 10); 
     upc /= 10; 
     long n5 = (int) (upc % 10); 
     upc /= 10; 
     long n4 = (int) (upc % 10); 
     upc /= 10; 
     long n3 = (int) (upc % 10); 
     upc /= 10; 
     long n2 = (int) (upc % 10); 
     upc /= 10; 
     long n1 = (int) (upc % 10); 

     if (r == n12) { 
      return (upc + " is a feasible UPC code"); 
     } else { 
      return (upc + " is an invalid UPC code"); 
     } 
    } 
} 

和是我的錯誤如下:

13 errors found: 
File: C:\Users\Andrew\Downloads\Upc.java [line: 10] 
Error: n2 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 10] 
Error: n4 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 10] 
Error: n6 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 10] 
Error: n8 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 10] 
Error: n10 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 11] 
Error: n1 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 11] 
Error: n3 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 11] 
Error: n5 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 11] 
Error: n7 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 11] 
Error: n9 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 11] 
Error: n11 cannot be resolved to a variable 
File: C:\Users\Andrew\Downloads\Upc.java [line: 39] 
Error: Type mismatch: cannot convert from java.lang.String to long 
File: C:\Users\Andrew\Downloads\Upc.java [line: 42] 
Error: Type mismatch: cannot convert from java.lang.String to long 

我覺得像固定一兩件事情將消除這種很多,誰能幫助我?

+1

如果我可能會建議某人從Java開始......如果你還沒有,嘗試用適當的IDE進行開發(我推薦[Eclipse](www.eclipse.org),但還有其他人良好的免費選擇)。這將有助於各種各樣的事情,從提供修復錯誤的建議到自動格式化代碼以自動編譯等。我還建議有意義地指定變量/方法/類(好吧,當它們是數學時很難,但仍然)並且學習在可能的情況下重構重複的代碼(一次且只有一次規則)。祝你好運,並保持在它! :-) –

回答

2

這個變量使用了不被定義的變量之後

long n12 = (int) (upc%10); 
upc /= 10; 
long n11 = (int) (upc%10); 
upc /= 10; 
long n10 = (int) (upc%10); 
upc /= 10; 
long n9 = (int) (upc%10); 
upc /= 10; 
long n8 = (int) (upc%10); 
upc /= 10; 
long n7 = (int) (upc%10); 
upc /= 10; 
long n6 = (int) (upc%10); 
upc /= 10; 
long n5 = (int) (upc%10); 
upc /= 10; 
long n4 = (int) (upc%10); 
upc /= 10; 
long n3 = (int) (upc%10); 
upc /= 10; 
long n2 = (int) (upc%10); 
upc /= 10; 
long n1 = (int) (upc%10); 



int m = (n2 + n4 + n6 + n8 + n10); 
long n = (n1 + n3 + n5 + n7 + n9 + n11); 
long r = (10-(m+3*n)%10); 

找你定義和使用後,可以定義變量

編輯:因爲如果

在定義你使用返回值的方法很長時間,並返回字符串值,請參閱返回值

return (upc + " is a feasible UPC code"); 

您需要更改返回類型無論是在方法或回程時間一樣,如果你想回到這點,你的方法簽名看起來像這樣

public long getUpc(){ 
    // and return will work 
    return (upc + " is a feasible UPC code"); 
} 

,但如果你只想數值則沒有變化它的方法簽名只是像這樣返回upc

return upc; 
+0

哦哇大聲笑謝謝。好吧,我這樣做了,現在我只有兩個與最後的if語句有關的錯誤。我認爲我以某種方式做了錯誤陳述。有任何想法嗎? – Andrew

+0

你能解釋你得到哪種類型的錯誤嗎? – Pratik

+0

我在if語句末尾顯示的錯誤顯示「File:C:\ Users \ Andrew \ Downloads \ Upc.java [line:39] 錯誤:類型不匹配:無法從java.lang.String轉換爲long 文件:C:\ Users \ Andrew \ Downloads \ Upc.java [line:42] 錯誤:類型不匹配:無法從java.lang.String轉換爲long「 – Andrew

3

這是因爲你還沒有宣佈這些變量您在本使用它們這些行前:

int m = (n2 + n4 + n6 + n8 + n10); 
long n = (n1 + n3 + n5 + n7 + n9 + n11); 

您後宣佈他們...基於我認爲

你正在嘗試做,你需要將這三條線移動到之後那大塊的分割/模數碼:

int m = (n2 + n4 + n6 + n8 + n10); 
long n = (n1 + n3 + n5 + n7 + n9 + n11); 
long r = (10-(m+3*n)%10); 
2

這是因爲您在告訴編譯器它們是什麼之前使用了變量。首先,你應該宣佈他們,然後使用它們。

相關問題