2013-07-18 3 views
0

Je rencontre des problèmes. Ce code ne déclenche aucune erreur de compilation, cependant, System.out.println ne s'affiche pas. Il devrait montrer comment vous devriez colorier les quatre côtés. Est-ce que je fais une erreur dans la boucle for ou est-ce avec la structure?Sortie standard Java ne produit pas de sortie

Voir le code ci-dessous:

public interface Colorable { 
    // Abstract to be called later 
    public abstract String howToColor(); 

} 

public class HowToColour { 

    /** 
    * @param args 
    *   the command line arguments 
    */ 
    public static void main(String[] args) { 
     // TODO code application logic here 
    } 
} 

public class TestColorable { 
    public static void main(String[] args) { 
     Object[] obj1 = { 
      new Square(), 
      new Rectangle(), 
      new Rhombus(), 
      new Parallelogram(), 
      new Trapezium() 
     }; 
     for (int i = 0; i < obj1.length; i++) { 
      if (obj1[i] instanceof Colorable) { 
       System.out.println(((Colorable) obj1[i]).howToColor()); 
      } else { 
       System.out.println("This shape is not to be colored"); 

      } 
     } 
    } 
} 

class GeometricOgject { 

} 

// Initial Method to use the interface 
class Square extends GeometricOgject implements Colorable { 
    @Override 
    public String howToColor() { 
     return "Square: Color all four sides"; 
    } 
} 

// Method to use an interface in an abstract class 
abstract class FourSides implements Colorable { 

} 

class Rectangle extends FourSides { 
    @Override 
    public String howToColor() { 
     return "Rectangle: color all four sides"; 
    } 
} 

class Rhombus extends FourSides { 
    @Override 
    public String howToColor() { 
     return "Rhombus: color all four sides"; 
    } 
} 

class Parallelogram extends FourSides { 
    @Override 
    public String howToColor() { 
     return "Parallelogram: color all for sides"; 
    } 
} 

class Trapezium extends FourSides { 
    @Override 
    public String howToColor() { 
     return "Trapezium: color all four sides"; 
    } 
} 
+0

sont ces tous dans des fichiers séparés? Comment invoquez-vous cela? – Woot4Moo

+6

Il y a deux 'main()' s. – hmjd

+5

Utilisez un retrait cohérent et logique pour les blocs de code. L'indentation du code a pour but d'aider les gens à comprendre le déroulement du programme. –

Répondre

3

Si cela est dans un fichier que je peux voir qu'il ya un conflit potentiel avec la déclaration de deux classes ayant une fonction principale. Par coïncidence, une de vos conduites est vide et cela pourrait être celui qui est en cours d'exécution. Si ceux-ci sont dans des fichiers différents, vous devez simplement être en mesure d'exécuter ceci sur la ligne de commande:

java TestColorable 

ce que je suppose que se passe, est l'équivalent de:

java HowToColour 

faire ce qui suit, chacun son propre fichier :

public class HowToColour 
{ 
    //implementation 
}  

public class TestColorable 
{ 
    //implementation 
} 

javac TestColorable.java 
javac HowToColour.java 

java TestColorable 
    **output will go here** 
java HowToColour 
    **no output here** 
+1

Les deux classes sont * public *. Ils ne peuvent pas être dans le même fichier. –

+0

@RaviThapliyal - relisez la réponse. –

+0

@RaviThapliyal bonne prise. Cependant, OP n'a toujours pas été très clair sur la façon dont le code est en cours d'exécution. – Woot4Moo