2014-05-17 3 views
0

C'est la deuxième fois que je l'ai essayé d'utiliser la méthode PrintWriter#printf, et je reçois ce message d'erreur:La méthode printf ne fonctionnera pas

La méthode printf (String, Object []) dans la type PrintStream n'est pas applicable pour l'argument (String, String)

Le code que j'utilise a deux classes.

Ceci est la première classe:

class apples4 { 
    public static void main(String[] args) { 
    tuna4 tuna4Object = new tuna4("Kelsey"); 
     tuna4Object.saying(); 
    } 
} 

C'est la deuxième classe: méthode

public class tuna4 { 
    private String girlName; 

    public tuna4(String name) { 
     girlName=name; 
    } 

    public void setName(String name) { 
     girlName=name; 
    } 

    public String getName() { 
     return girlName; 
    } 

    public void saying(){ 
     System.out.printf("Your first girlfriend was %s\n", getName()); 
    } 
} 
+1

Quelle version de Java Utilises-tu? –

+0

J'ai téléchargé java il y a environ deux semaines. Je pense que c'est 1,8 – zyzz

+1

Java 6, 7 ou 8 devrait fonctionner, ce qui suggère que vous n'utilisez pas ceux-ci. –

Répondre

3
Check your compliance level... 

enter image description here

0

PrintStream#printf est disponible depuis Java SE 5. Il semble que votre code est compilé/évalué par Java 4 ou avant.

Vérifiez votre installation JDK et/ou vos paramètres IDE sur la façon dont elle compile/évalue votre code.


Par ailleurs, si vous utilisez Eclipse et Java 8, Eclipse a besoin d'un plug-in pour reconnaître les applications Java 8, donc par défaut l'évaluateur déclasser votre projet Java 1.4. Cela m'est arrivé et je l'ai résolu par installing an update in Eclipse Kepler. Eclipse Luna (dernière version d'Eclipse) dit qu'il supporte Java 8, mais n'a pas fonctionné pour moi (pas sûr si j'ai suivi les bonnes étapes ou fait quelque chose de mal, mais je suis retourné à Kepler et fonctionne bien).

+0

J'ai Java version 1.8. J'ai juste essayé 1.5 et cela n'a pas fonctionné non plus. Comment puis-je vérifier comment il compile le code? – zyzz

+0

@zyzz Selon votre IDE, vous devrez nous dire lequel vous utilisez. – ajp15243

+0

@zyzz réponse mise à jour, désolé pour ma mise à jour tardive. –

0

Cela peut sembler bizarre, mais vous pouvez jeter la valeur de retour de votre méthode getName() pour objet:

System.out.printf("Your first girlfriend was %s\n", (Object) getName()); 

Ou (pour créer le tableau demandé), même

System.out.printf("Your first girlfriend was %s\n", new Object[] {(Object) getName()}); 

pourrait aider .

+0

Ceci n'est pas nécessaire pour 'printf'. Surtout le second: 'System.out.printf' prend un' String' et un Varargs (donc vous n'avez pas besoin d'empaqueter le tableau) – Justin

+0

Je pense que cela fonctionne autour du symptôme, plutôt que de résoudre le problème de base (qui est probable que l'EDI de OP compile avec un compilateur Java 1.4, qui ne reconnaît pas les arguments var). – ajp15243

+0

@Quincunx Je sais. J'ai juste essayé d'interpréter le message d'erreur de la question et d'y réagir. Si ce que vous avez écrit est vrai dans le cas ci-dessus, le message d'erreur n'aurait aucun sens. – TAq

0

Je suis désolé de mon post précédent disant que j'ai eu le même problème, je ne l'ai pas lu le « avant de poster lire ce » boîte de dialogue qui dit ne pas le faire. Eh bien, après avoir passé beaucoup de temps à chercher la réponse, je me suis débrouillé. Dans la boîte de dialogue Preferences-> Java-> Compiler, il y a un bouton dans le coin supérieur gauche appelé "Configure Project Specific Settings ...". Cliquez dessus et modifiez le niveau de conformité à> = Java 1.5 ou désactivez-le. Boom, fixe.