嗨,我尝试用3个随机字母组成一个猜字母游戏,当我尝试使用以下代码获取一个值时,它总是以int的形式返回给其他程序,但我试图以字母的形式接收它,但是无法计算出来。

 import java.util.Random;

 public class CodeLetter {
 private char letterValue;
 int count = 8;
 Random rnd = new Random ();


 public char codeLetter(){

letterValue = (char)(rnd.nextInt(5)+'A');
System.out.println(letterValue);
return letterValue;


 }

 }


使用line调用上述代码的代码

  letter1 = codeLetter.codeLetter();


但是一旦将其打印到屏幕上,它仍然保留一个int值,而不是char。
该程序要求两个类都为必填项

public class CodeBreaker {
    private char letter1;
    private char letter2;
    private char letter3;

    CodeLetter codeLetter = new CodeLetter();


    public void CodeBreaker(){
        //Welcome Screen
                System.out.println("Welcome to CODEBREAKER ");
                System.out.println("you have 6 tries to guess the secret 3 letter code.");
                System.out.println("The letters Range from A to E");
                System.out.println("Goodluck");
                System.out.println("The code has no repeat letters");
                //end
                letter1 = codeLetter.codeLetter();
                letter2 = codeLetter.codeLetter();
                letter3 = codeLetter.codeLetter();

                System.out.println(letter1 + letter2 + letter3);
    }
    /*public boolean done(){

    }
    /*private boolean isValid*char){
        //- Is the given letter valid?
    }*/

    public void getGuess(/*int*/){
        //- Get guess #
    }
    public void checkGuess(){
        //- Verify the guess
    }
    public void display(){
        //- Display the secret code
    }

}

最佳答案

我已经运行了您的程序。我发现波纹管输出。

Welcome to CODEBREAKER
you have 6 tries to guess the secret 3 letter code.
The letters Range from A to E
Goodluck
The code has no repeat letters
B
B
C
199


如果我理解正确,则您对该199有问题。我想,您想要的是BBC而不是199。这是因为您将+符号与char类型一起使用,该类型将隐式转换为整数并进行算术运算。因此,您在以下行System.out.println(letter1 + letter2 + letter3);上遇到问题。您可以分别打印那些不同的字符。

顺便说一句,您的codeletter()方法按预期返回char。同样,对于这种语言行为,您可以在Strongly vs Weakly type上重新学习

09-10 03:32
查看更多