java - 逐个字符比较字符串和文本
问题描述
我正在制作一个打字游戏。当用户输入一个键时,程序应该将它与存储的字符串/数组进行比较。如果它与该索引处的字符匹配,则分数变量应递增。
我试图将输入的文本存储在一个字符串中,然后在将其分解为字符后进行比较。
text=new JTextField(40);
String sentence="the quick brown fox jumps over the lazy dog";
String store=text.getText();
for (int i = 0; i < store.length(); i++) {
if(store[i]==sentence.charAt(i)) { //error
score++;
}
}
如果输入的键与字符匹配,则增加“分数”,否则减少。
解决方案
你的store
变量也是一个字符串而不是一个数组,所以你必须使用.charAt()
:
for (int i = 0; i < Math.min(store.length(), sentence.length()); i++) {
if(store.charAt(i) == sentence.charAt(i)) {
score++;
} else {
score--;
}
}
您还应该使用Math.min(store.length(), sentence.length())
来防止IndexOutOfBoundsException
.
推荐阅读
- go - 为什么我的全局变量没有跨包设置?
- php - 将按钮链接到 Symfony 控制器路由并打开模式
- python - 收到错误“文件”
",第 968 行,在 _find_and_load' 中导入 tensorflow - c++ - 在 std::thread 中提升 asio 阻塞操作而不是使用异步方法?
- ios - 即使 target(forAction:…) 为 nil,UIApplication 的 sendAction() 也可以工作
- php - 我无法使用 post 方法从 php 中的 html 工作中获取此表单
- magento2 - Magento 2 前端缺少产品图片
- r - 如何在 R 中创建多个对象并将它们存储在单独的 CSV 中?
- python - 如果属性不为空,如何返回属性,如果为空,如何调用填充属性的方法
- python - 如何扫描以前的列表值以添加新的复合列表值?