Java加密字代码

Java加密字代码,java,Java,我正在制作一个基本的java程序来保存一个秘密单词(鼠标)并允许用户猜测字母。当用户猜出单词中的所有字母时,或者当他们猜错7个字母时,程序将结束。每当我在程序中输入任何字母时,它都会在程序中运行,而不给用户输入另一个字母的选项。我应该添加什么,以便它只会在每个输入的字母中运行程序一次?另外,如果不是很明显,我是新的编码 import java.util.Scanner; public class GuessWord { String Secretword="mouse"; Str

我正在制作一个基本的java程序来保存一个秘密单词(鼠标)并允许用户猜测字母。当用户猜出单词中的所有字母时,或者当他们猜错7个字母时,程序将结束。每当我在程序中输入任何字母时,它都会在程序中运行,而不给用户输入另一个字母的选项。我应该添加什么,以便它只会在每个输入的字母中运行程序一次?另外,如果不是很明显,我是新的编码

import java.util.Scanner;
public class GuessWord
{
    String Secretword="mouse";
    String letter;
    int index;
    private int number;
    private int counter;
    private String guesses;
    Scanner scan = new Scanner(System.in);

    public GuessWord()
    {
        String Secretword="";
        String letter = "";
        String guesses = "";
        int number = 0;
        int counter = 0;
        int index = 0;
    }

    public String getLetter(){
    System.out.println("Please enter a letter");
    letter = scan.next();
    return letter;
    }

    public void calc(){ 
        guesses=letter;
        while(number <= 7 && counter<5)
        {
            if(Secretword.indexOf(letter) != -1)
            {
                index = Secretword.indexOf(letter);
                System.out.println("You entered a letter in the word");
                counter++;
            }
            else 
            {
                System.out.println("You entered an incorrect letter");
                number++;
            }
            guesses=guesses+" " +letter;
            System.out.println("The letters you have guessed are:" + guesses);
            }

            String str;
        if(number == 7){
            System.out.println("You lose");
        }else 
        {
            System.out.println("You win");
        }
        }

}//class




public class GuessWordR
{
    public static void main(String[]args)
    {
    GuessWord g1 = new GuessWord();
    g1.getLetter();
    g1.calc();
    }//class    
}//main
import java.util.Scanner;
公共类猜测词
{
String Secretword=“鼠标”;
字符串字母;
整数指数;
私有整数;
专用int计数器;
私人字符串猜测;
扫描仪扫描=新扫描仪(System.in);
公众猜测词
{
字符串Secretword=“”;
字符串字母=”;
字符串猜测=”;
整数=0;
int计数器=0;
int指数=0;
}
公共字符串getLetter(){
System.out.println(“请输入字母”);
字母=scan.next();
回信;
}
public void calc(){
猜测=字母;

while(number您应该使用while循环

因此,当某些条件不满足时,继续要求用户输入新密钥

也许可以向GuessWord类添加一个新方法

public void startGuessing() {
   while(hasGuesses /* some boolean flag */) {
         getLetter()
         getCalc()
   }
} 
然后在main方法中调用该方法,而不是
getLetter()
getCalc()


您需要向类中添加一个
boolean
变量,以指示何时退出此while循环,以及用于计数失败猜测次数的逻辑等。

除非条件得到满足,否则您会请求用户输入,而不是一次询问和计算。并且逐字符读取输入,而不是读取整个字符串。 比如:

public static void main(String[]args)
{
      GuessWord g1 = new GuessWord();

      while(number <= 7 && counter<5){
            g1.getLetter();
            g1.calc();
      }
}//class
publicstaticvoidmain(字符串[]args)
{
猜词g1=新猜词();

while(number使用布尔标志并在循环中运行它。但为此,您还需要重新构造代码。首先修复calc()方法


请记住,您是在构造函数中声明新变量,而不是为实例变量设置默认值。
每当我在程序中键入任何字母时,它都会在其中运行,而不会给用户输入另一个字母的选项。
可能是因为您从未要求更多字母。您的循环将始终“评估”用户在
main
方法中输入的唯一字母。@Tom Oh,这很明显。谢谢。我将问题转移到while循环中。
number
counter
不是静态的。它们不应更改为
static
public boolean calc() {
    guesses = letter;
    if (number <= 7 && counter < 5) {
        if (Secretword.indexOf(letter) != -1) {
            index = Secretword.indexOf(letter);
            System.out.println("You entered a letter in the word");
            counter++;
        } else {
            System.out.println("You entered an incorrect letter");
            number++;
        }
        guesses = guesses + " " + letter;
        System.out.println("The letters you have guessed are:" + guesses);
    }

    String str;
    if (number == 7) {
        System.out.println("You lose");
        return true;
    } else if (counter == 5) {
        System.out.println("You win");
        return true;
    } else {
        return false;
    }
}
public static void main(String[] args) {
    GuessWord g1 = new GuessWord();
    boolean completed = false;
    while (!completed) {
        g1.letter = g1.getLetter();
        completed = g1.calc();
    }
}