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