2011-12-13 22 views
1

所以我正在做一個hang子手遊戲,編譯我的代碼,我開始運行它,它爆發了一個錯誤:所以看起來像這樣。我試過調試沒有成功。我只是不知道它在問什麼。誰能幫忙?IllegalFormatConversionException:c!= java.lang.string(當使用printf時)

P:\CSCI 161>java hw101 
Lets play Hangman 

Guess a letter:c 
Exception in thread "main" java.util.IllegalFormatConversionException: c != java 
.lang.String 
     at java.util.Formatter$FormatSpecifier.failConversion(Formatter.java:399 
9) 
     at java.util.Formatter$FormatSpecifier.printCharacter(Formatter.java:278 
0) 
     at java.util.Formatter$FormatSpecifier.print(Formatter.java:2671) 
     at java.util.Formatter.format(Formatter.java:2433) 
     at java.io.PrintStream.format(PrintStream.java:920) 
     at java.io.PrintStream.printf(PrintStream.java:821) 
     at hw101.check(hw101.java:67) 
     at hw101.main(hw101.java:13) 

代碼:

import java.util.*; 
import java.io.*; 

public class hw101 

{ 
    public static void main (String args []) 
    { 
     String activeword; 
     System.out.printf ("Lets play Hangman\n"); 
     activeword = randomword(); 
     check (activeword); 
    } 
    public static String randomword() 
    { 
     String words [] = {"fat", "cat", "dog", "bat", "pat"}; 
     String activeword = words [(int) (Math.random() * 5)]; 
     return activeword; 
    } 
    public static void check (String activeword) 
    { 
     Scanner person = new Scanner (System.in); 

     char inchar; 
     char array []; 
     char letter []; 
     int s; 
     int m; 
     int notright = 0; 
     int failed = 0; 

     array = new char [activeword.length()]; 
     array = activeword.toCharArray(); 
     String dummy = "!!!"; 
     letter = new char [dummy.length()];   

     for (s=0;s<26;s++) 
     { 
      System.out.printf ("\nGuess a letter:"); 
      inchar = person.next().charAt(0); 

      for(m=0;m<array.length;m++) 
      { 
       if (array[m] == inchar) 
       { 
        letter[m] = array[m]; 
        notright = 1; 
       } 
      } 
      if(Arrays.equals(letter, array)) 
      { 
       System.out.printf ("%c", Arrays.toString(letter)); 
       System.out.printf ("You Win\n"); 
       System.exit(0); 
      } 
      if(notright != 1) 
      { 
       failed = failed + 1; 
      } 
      if(failed == 6) 
      { 
       System.out.printf ("%c", Arrays.toString(letter)); 
       System.out.printf ("You lost the word was %s\n", activeword); 
       System.exit(0); 
      } 
      System.out.printf ("%c", Arrays.toString(letter)); 
     } 
    } 
} 

回答

1

使用%S(字符串)格式。

System.out.printf ("%s", Arrays.toString(letter)); 
1

這條線:

System.out.printf ("%c", Arrays.toString(letter)); 

應改爲:

System.out.printf ("%s", Arrays.toString(letter)); 

你監守你打印使用%c打印格式的String收到此錯誤。

2

Arrays.toString(letter)將返回string"%c"預計char