java - 为什么当 for 循环进行时我的字符计数器没有增加?
问题描述
我目前正在编写一个程序,该程序接受一个字符串和一个字符(如果您决定在其中放入一个字符)和(应该)检查该字符在字符串中出现的次数并在最后打印出它在那里的次数。由于某种原因它不起作用,我需要一些帮助;谢谢你!
import java.util.Scanner;
public class HowManyChars {
public HowManyChars() {
Scanner sc = new Scanner (System.in);
String askPhrase;
String askChar;
int charCounter = 0;
System.out.println("Enter a phrase");
askPhrase = sc.nextLine();
System.out.println("Enter a letter");
askChar = sc.nextLine();
for (int i = 0; i < askPhrase.length(); i++) {
if (askPhrase.substring(i, i + 1) == askChar) {
charCounter = charCounter + 1;
}
}
System.out.println("There are " + charCounter + " " + askChar + " in " + askPhrase);
}
}
解决方案
我将这个答案归功于@Mushif,他正确地解决了这个问题。您当前的比较逻辑是将字符串与字符进行比较:
for (int i=0; i < askPhrase.length(); i++) {
// String char
if (askPhrase.substring(i, i + 1) == askChar) {
charCounter = charCounter + 1;
}
}
尝试迭代输入单词的字符集,然后将 apples 与 apples 进行比较:
for (int i=0; i < askPhrase.length(); i++) {
if (askPhrase.charAt(i) == askChar) {
charCounter = charCounter + 1;
}
}
您还可以直接在输入的字符集上使用增强循环:
for (char chr : askPhrase.toCharArray()) {
if (chr == askChar) {
charCounter = charCounter + 1;
}
}
推荐阅读
- c++ - 动态数组和指针表示法
- php - 在收到字段后尝试将我的 PHP 表单重定向到另一个页面时出现错误
- javascript - 将函数设置为已弃用
- android - 如何解决:无法解决:com.mapbox.mapboxsdk:mapbox-android-sdk:9.5.0
- if-statement - If 语句和输入变量的值 - Pine 脚本 - Tradingview
- css - 使用 CSS Grid Full Bleed 布局获取“下一个/图像”?
- python - 无法从控制台发送消息到不和谐
- php - 我有这个 PHP 表单处理文件,它可以工作,但有 2 个我无法解决的问题
- heroku - 如何使用 Heroku 创建数据库
- python - 更改日期熊猫