gpt4 book ai didi

java - 我正在为我的计算机编程课创建一个初学者刽子手项目。我遇到了一些问题

转载 作者:行者123 更新时间:2023-12-01 04:12:35 26 4
gpt4 key购买 nike

代码尚未完成,但我遇到了一些问题。这是我当前的代码:

public class Engine
{
public static void main(String[] args)
{
String word = JOptionPane.showInputDialog("Player 1! Please enter a word.");
JOptionPane.showMessageDialog(null, "Switch to Player 2. It is time to play hangman!");
char[] letters = word.toCharArray();
String[] underscores = new String[word.length()];
for(int i=0; i<=word.length()-1; i++)
{
underscores[i]="_ ";
}
StringBuilder builder = new StringBuilder();
for (int i=0; i<word.length(); i++)
{
builder.append(underscores[i]);
}
int mistakes = 0;
while(mistakes!=7)
{
String answer = JOptionPane.showInputDialog(null, "Please guess a letter.\n" + "Mistakes = " + mistakes + " of 7!\n\n" + builder.toString() + "\n\n");
char guess = answer.charAt(0);
for(int i=0; i<=word.length()-1; i++)
{
if(guess==letters[i])
{
underscores[i] = answer;
for (int x=0; x<word.length(); x++)
{
builder.append(underscores[x]);
}
}
}
}
}
}

我遇到的问题是 StringBuilder 部分和 .append()

例如,如果单词是“帽子”。将出现一个带有三个下划线的窗口,如下所示:

<小时/>

如果我猜“h”,那么它会变成:

_ _ _ h _ _

而不是

h_ _

此外,如果我接下来猜“t”,它会变成:

_ _ _ 小时 _ _ 小时 _ t

它将数组中已更改的元素添加到已存在的数组中。我很确定这是由追加方法引起的,但我不知道任何替代方法。

最佳答案

StringBuilder 的 append 方法将新文本添加到现有文本中。这就是为什么你会得到 _ _ h _ _h_ 之类的东西。如果您使用 StringBuilder 是为了避免创建新的字符串对象,那么在附加文本之前,请使用 delete() 方法清除构建器的现有文本,然后附加它。

喜欢

builder.delete(0,builder.length()-1);
for(int x=0;x<words.length();x++) {
builder.append(underscores[x]);
}

编辑:您的理解是正确的,可以在不使用 StringBuilder 的情况下构建这个游戏,请检查下面的代码。

import java.util.Scanner;

class Game {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String word = null;
char[] letters;
char[] underScores;
char guess;
int found=0;
int mistake=0;
boolean present = false;

System.out.println("Enter the word");
word = s.nextLine();

letters = word.toCharArray();
underScores = new char[letters.length];
for(int i = 0; i<letters.length;i++) {
underScores[i]='_';
}

while(true) {
System.out.println("The word is");
for(int i = 0; i<letters.length;i++) {
System.out.print(underScores[i]);
}

System.out.println("\nEnter a letter");
guess= s.nextLine().charAt(0);

for(int i =0; i<letters.length;i++) {
if(guess==letters[i]) {
underScores[i]=guess;
found+=1;
present=true;
break;
}
}

if(!present) {
System.out.println("the letter is not present");
mistake+=1;
}

if(mistake >=7) {
System.out.println("too many mistakes!! sorry");
break;
}

if(found==letters.length){
System.out.println(word);
System.out.println("you have found the word!!");
break;
}
} //ending while
} //ending main
} //ending Game

关于java - 我正在为我的计算机编程课创建一个初学者刽子手项目。我遇到了一些问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19782019/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com