java - 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 显示正常但下划线仍然存在。
代码不完整,我仍在尝试很多功能和方法,同时我发布这个是为了让你们了解一下。
提前谢谢你
解决方案
您使用了错误的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();
推荐阅读
- blazor - Blazor 包罗万象的路由例外
- mysql - 无需对数据进行写访问的数据库维护
- python - 分类概率校准代码
- python - ValueError:尝试绘制 SVM 时 x 和 y 的大小必须相同
- mysql - 是否可以查询表以查找包含非 ASCII UTF-8 字母的行?
- serial-port - 无法使用 CM574 通过 COM_REC 块接收串行 RS422 数据
- angular - 应用程序在 Chrome 91 中无休止地重启,“问题”中出现 cookie 错误
- glassfish - 用于现场生产的启动器 Glassfish4.1.2 设置
- c# - C# 从字符串计算
- typescript - 有没有办法强制一个类包含一个特定的枚举值(最好是内联的)?