2013-02-15 242 views
1

我不知道我的代碼有什麼問題,它不會編譯,因爲編譯器找不到變量k。範圍問題

我的代碼:

public class t 
{ 
    public static void main(String args[]) 
    { 
     int r = 10; 
     int c = 10; 

     char[][] map = new char[r][c]; 

     for(int i = 1; i < (r - 1); i++) 
     { 
      for(int k = 1; k < (c - 1); k++); 
      { 
       map[i][k] = '$'; 
      } 
     } 
    } 
} 

錯誤它給我:

symbol: variable k 
    location: class t 
    1 error 

我一直在想這是一個範圍問題,但variable k是內部嵌套的循環,所以它應該是好吧?

+1

除了丟棄分號:選擇適合您的變量和類更好的名稱,並尊重的Java命名約定。 – 2013-02-15 23:31:04

回答

4

你有一個分號爲你的「k」for循環的結尾;去掉它。更改

for(int k = 1; k < (c - 1); k++); 
{ 
    map[i][k] = '$'; 
} 

for(int k = 1; k < (c - 1); k++) 
{ 
    map[i][k] = '$'; 
} 
+0

大聲笑,謝謝我很專注於那個k,我沒有看到分號 – 2013-02-15 23:31:52

1

它,因爲在低於行末尾附加分號......

for(int k = 1; k < (c - 1); k++) 
1
for(int k = 1; k < (c - 1); k++); 

;


闡述:

;實際上是一個空語句是有效的在Java中:

Foo f = new Foo(); 
; 
f.doSomething(); 

在Java中,你可以有一個控制語句沒有大括號{},如:

if(booleanFlag) doSomething(); 
else doSomethingElse(); 

// ... 

for(String s : stringArray) System.out.println(s); 

這就是你在代碼中使用的:

for(int k = 1; k < (c - 1); k++); // iterate on the empty statement 

然後,你打開新的代碼塊無關與for循環:

這是隻執行一次
{ 
    map[i][k] = '$'; 
} 

1

for loop的末尾有一個分號,它初始化了k - 刪除那個,你應該沒問題!

1

刪除第二個for循環後面的分號。

分號是一個稱爲空語句的合法語句;這意味着「無所事事」。

3

有一個小錯誤在你的代碼:

for(int k = 1; k < (c - 1); k++); 

應該不會在年底分號。

2

分號你的第二個循環結束,刪除它,它會幫助你的事業

for(int k = 1; k < (c - 1); k++); 
           ^