2016-10-19 245 views
0

我正在使用Deitel和Deitel學習Java,並且正在使用Intellij IDEA IDE。在本書的一個例子中,我將其複製到IDE中,它用一個初始化變量寫入for循環。當我運行編譯器時,它給了我一個錯誤,說「java找不到符號(變量)我」。即使我知道循環變量在循環之前不需要初始化,但我試圖在循環之前將它聲明爲一個實例變量,並且它運行,但結果不是它應該是的結果(它導致一個矩形或一個橢圓形,這取決於我輸入的開關情況,但它應該通過for循環給我10個,這顯然不會被執行)。 switch塊位於for循環內。爲什麼i變量未被初始化?使用IntellijIDEA在For循環中未初始化循環變量

這是代碼。

package com.example.java; 
import java.awt.Graphics; 
import javax.swing.JPanel; 

public class Shapes extends JPanel 
{ 
    private int choice; 

    public Shapes(int userChoice) 
    { 
     choice = userChoice; 
    } 

    public void paintComponent(Graphics g) 
    { 
     super.paintComponent(g); 

     for (int i = 0; i < 10; i++); 
     { 
      switch(choice) 
      { 
      case 1: 
       g.drawRect(10 + i * 10, 10 + i * 10, 
         50 + i * 10, 50 + i*10); 
       break; 
      case 2: 
       g.drawOval(10 + i * 10, 10 + i * 10, 
         50 + i * 10, 50 + i*10); 
       break; 
      } 
     } 
    } 
} 
+0

在'for(int i = 0; i <10; i ++);'末尾刪除分號。否則,你的'for'循環以分號結束,'switch'模塊不在'i'的範圍內。 – khelwood

+0

謝謝!我失去了多少次重讀這一點的計數,我仍然讓這樣的事情通過!我應該懷疑它的結果是我得到了! – NeoTrader

回答

4
for (int i = 0; i < 10; i++); 

關注那些分號;)

for (int i = 0; i < 10; i++) 
0

這是你for loop

for (int i = 0; i < 10; i++); {

您應將其更改爲:

for (int i = 0; i < 10; i++){

什麼你做的是一遍又一遍執行什麼,然後打開一個新的塊。

For loopsfor(;;){}沒有相同的語法do while loopsdo{}while();

了當您要執行的代碼,一個線段可以使用for(;;);是唯一的案例。

例如:for(int index = 0; index < 5; index++)System.out.println(index);

0

for (int i = 0; i < 10; i++);包含限制的範圍for循環只有這條線以分號。如果你糾正這個問題,你的代碼應該正常工作。