2016-10-19 8 views
0

Ich studiere Java mit Deitel und Deitel und ich verwende die Intellij IDEA IDE. In einem der Beispiele des Buches, das ich in die IDE kopiert habe, schreibt es eine for Schleife mit einer Initialisierungsvariablen. Wenn ich den Compiler starte, gibt es eine Fehlermeldung, dass "Java das Symbol (Variable) nicht finden kann". Obwohl ich weiß, dass Schleifenvariablen keine Initialisierung vor der Schleife benötigen, habe ich versucht, sie als Instanzvariable vor der Schleife zu deklarieren, und sie wird ausgeführt, aber das Ergebnis ist nicht das, was es sein soll (es ergibt eins) Rechteck oder ein Oval, je nachdem, welchen Schalterfall ich betrete, aber es soll mir 10 von ihnen durch die for-Schleife geben, die offensichtlich nicht ausgeführt wird). Der switch Block befindet sich innerhalb der for Schleife. Warum wird die i Variable nicht initialisiert?Loop-Variable nicht initialisiert in For-Schleife mit IntellijIDEA

Hier ist der Code.

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

Löschen Sie das Semikolon am Ende von 'for (int i = 0; i <10; i ++);'. Andernfalls endet Ihre 'for'-Schleife am Semikolon und der' switch'-Block liegt außerhalb des Bereichs von 'i'. – khelwood

+0

Danke! Ich habe vergessen, wie oft ich das noch einmal gelesen habe und ich lasse immer noch so etwas passieren! Ich hätte es mit dem Ergebnis, das ich bekommen hatte, vermutet! – NeoTrader

Antwort

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

beobachten diese Semikolons;)

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

Hier ist Ihre for loop:

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

Sie sollten es ändern:

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

Was Sie taten nichts immer und immer wieder ausgeführt wird und dann einen neuen Block zu öffnen.

For loopsfor(;;){} haben nicht die gleiche Syntax wie do while loopsdo{}while();

Den einzigen Fall, in dem Sie for(;;); sind, wenn Sie ein einzeiliges Codesegment ausführen mögen verwenden können.

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

0

for (int i = 0; i < 10; i++); enthält ein Semikolon, die den Umfang der for-Schleife nur zu dieser Linie begrenzt. Wenn Sie dies korrigieren, sollte Ihr Code korrekt funktionieren.

Verwandte Themen