2010-12-04 7 views
0

Je sais qu'il ya quelque chose de simple comme bonjour, je suis absent, mais le code suivant ne pas écrire le texte en utilisant println:Morte Simple Java IO & Enum Question

import java.io.*; 
import javax.swing.JOptionPane; 

public class ConfigureSettings{ 
    private PrintWriter SettingsFile; 
    private enum Dodge{ 
     Ascending, Descending, Off 
    }; 
    private enum Damage{ 
     Ascending, Descending, Off 
    }; 
    private enum DPS{ 
     Ascending, Descending, Off 
    }; 

    ConfigureSettings(){ 
     try{ 
      SettingsFile = new PrintWriter(new File("UserSettings")); 
     } 
     catch(IOException e){ 
      JOptionPane.showMessageDialog(null, "Sorry cannot open UserSettings File"); 
     } 
     SettingsFile.println("k"); 
     JOptionPane.showMessageDialog(null, "Done"); 
    } 

    public static void main(String args[]){ 
     new ConfigureSettings(); 
    } 
} 

Ma question est Enumeration que je peux créer un Enumeration of Enumeration? Je veux dire, est-ce que je peux envelopper les trois variables enum actuelles que j'ai, Dodge Damage et DPS, dans la classe Super enum?

P.S. Je sais que mon code ne s'affiche pas correctement, des conseils pour les prochains posts/modifications?

+0

concernant le formatage du code : Vous devez indenter des blocs de code avec 4 espaces, puis il s'affichera correctement. Jetez un coup d'œil à l'aide en matière de formatage Markdown (http://stackoverflow.com/editing-help). – stakx

+0

@stakx merci pour l'info, j'ai mis à jour mes questions – Malaken

Répondre

2

En ce qui concerne la manquante println sortie: Avez-vous essayé flush ing le PrintWriter après println et explicitement close ing quand vous ne avez plus besoin?

En ce qui concerne votre enum d'enums question — pour quoi une énumération d'enums serait-elle bonne? Voulez-vous dire quelque chose comme ça (que je viens d'inventer — Je suis tout à fait sûr qu'il ne sera pas compilé):

private enum Enumenum { 
    enum Dodge { 
     Ascending, Descending, Off 
    }, 
    enum Damage { 
    Ascending, Descending, Off 
    }, 
    enum DPS { 
     Ascending, Descending, Off 
    } 
} 

Que feriez-vous avec un tel ENUM compliqué? Pourquoi ne pas simplement:

enum OneForAll { 
     Ascending, Descending, Off 
    } 

Et puis utilisez cette énumération au lieu des trois autres, car ils contiennent tous les mêmes valeurs de l'énumération de toute façon?

(mise à jour. A noter cependant que l'utilisation de la même ENUM au lieu de trois énumérations distincts pourrait très bien réduire la sécurité du type de votre code, de sorte que la suggestion ci-dessus pourrait ne pas être nécessairement une bonne chose)

+0

L'utilisation d'une énumération comme 'OneForAll' casserait la sécurité de type pour les enums que le mot-clé' enum' était censé ajouter à Java. – rsp

+1

@rsp, vous avez raison concernant la sécurité de type réduit. (D'un autre côté, créer une énumération d'enums ne semble pas tellement mieux à cet égard: si vous voulez que trois enums ne soient pas mélangés, tapez sécurité, vous ne devriez probablement pas essayer de les "fusionner" en un super-enum.) – stakx

+0

wow acclamations J'ai simplement rincé puis fermé l'objet de l'auteur et cela a résolu mon problème. Pouvez-vous expliquer pourquoi? Alors que je ne vais pas faire une erreur similaire. – Malaken