2016-10-19 10 views
0

私はDeitelとDeitelでJavaを学習していますが、Intellij IDEA IDEを使用しています。 IDEにコピーした本の例の1つでは、forループに初期化変数を書き込みます。コンパイラを実行すると、 "javaがシンボル(変数)iを見つけることができません"というエラーが表示されます。ループ変数はループの前に初期化を必要としないことがわかっていますが、ループの前にインスタンス変数として宣言してみましたが、実行されますが、結果は元のものとは異なります長方形、または1つの楕円形を入力しますが、それは私に10個のforループを渡すことになっています。これは明らかに実行されていません)。 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();

と同じ構文を持っていないあなたは1行のコードセグメントを実行したいときにfor(;;);を使用することができる唯一の場合です。例えば

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

0

for (int i = 0; i < 10; i++);のみ、このラインにするためのループの範囲を制限するセミコロンが含ま。これを修正すると、コードが正しく動作するはずです。

関連する問題