2

だから私は絞首刑執行人のゲームを作って、私のコードをコンパイルしました、私はそれを実行し始めます、そしてそれはエラーで爆発します:それでこのように見えます。デバッグを試みましたが成功しませんでした。私はそれが何を求めているのか分かりません。誰か助けてもらえますか?

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));
        }
    }
}
4

3 に答える 3

2

%s (文字列) 形式を使用します。

 System.out.printf ("%s", Arrays.toString(letter));
于 2011-12-13T06:23:05.817 に答える
2

Arrays.toString(letter)戻りstringますが、"%c"期待していcharます。

于 2011-12-13T06:28:14.547 に答える
1

この行:

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

次のものに置き換える必要があります。

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

%c印刷形式を使用して文字列を印刷しているため、このエラーが発生しています。

于 2011-12-13T06:23:57.843 に答える