oop Java hangman用用户输入替换下划线
用于使用基本getter/setter方法分配基本java oop类
我正在使用NetBean IDE
public MainFrame() {
initComponents();
hangman hangman=new hangman();
hangman.setWord(Word.wordArray);
jLabel1.setText(hangman.getWord());
jLabel2.setText(jLabel1.getText().replaceAll(".", " _ "));
}
private void jTextActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
StringBuilder builder = new StringBuilder(jLabel2.getText());
for(int i=0; i<7; i++){
hangman hangman=new hangman();
hangman.setInput(jText.getText().charAt(0));
jText.setText("");
for(int j=0; j<jLabel1.getText().length(); j++){
if(jLabel1.getText().toLowerCase().charAt(j)==hangman.getInput()){
if(jLabel1.getText().toLowerCase().charAt(j)==hangman.getInput()){
builder.setCharAt(j, hangman.getInput());
jLabel2.setText(builder.toString());
}
}
}
}
}
问题是getInput显示得很好,但下划线仍然存在
代码是不完整的,我仍然在尝试很多函数和方法,同时我发布这篇文章是为了让你们了解一些情况
提前谢谢你
# 1 楼答案
您使用了错误的StringBuilder方法。您不想使用
setCharAt(...)
,而是使用.replace(int start, int end, String str)
方法,这里可能是:正如我在上面的评论中所指出的,最好在与GUI隔离的情况下调试和增强代码(除非是GUI特有的问题)。在这里,您希望创建一个类,可能是
HangmanModel
,它保存字符串,保存当前的字符猜测,并在猜测过程中提供一个带有破折号和字母的字符串关于以下方面的附带问题:
您将想要学习和使用Java naming conventions。变量名都应该以小写字母开头,而类名应该以大写字母开头。学习这一点并遵循这一点可以让我们更好地理解您的代码,也可以让您更好地理解其他人的代码
因此,最好将类名称更改为^{,然后将上面的行更改为: