首页 > 解决方案 > 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 显示正常但下划线仍然存在。

代码不完整,我仍在尝试很多功能和方法,同时我发布这个是为了让你们了解一下。

提前谢谢你

标签: javaoop

解决方案


您使用了错误的StringBuilder 方法。您不想使用setCharAt(...),而是使用该.replace​(int start, int end, String str)方法,也许在这里:

builder.replace(j, j+1, stringToInsert);

正如我在上面的评论中所指出的,最好在与 GUI 隔离的情况下调试和增强您的代码(除非它是特定于 GUI 的问题)。在这里,您要创建一个类,它可能HangmanModel包含 String,它包含当前的 char 猜测,并且随着猜测的进行,它将为您提供一个带有破折号和字母的 String。


附带问题:

 hangman hangman=new hangman();

您将想要学习和使用Java 命名约定。变量名应全部以小写字母开头,而类名应以大写字母开头。学习这一点并遵循这一点将使我们更好地理解您的代码,并使您更好地理解其他人的代码。

所以最好把Hangman改成 ,然后把上面那行改成:

 Hangman hangman = new Hangman();

推荐阅读