gpt4 book ai didi

java - 无法正确计算字符

转载 作者:行者123 更新时间:2023-12-04 07:25:14 26 4
gpt4 key购买 nike

我应该有两个输入:一个是字符,另一个是字符串。
我必须编写一个程序来输出字符在字符串中出现的次数。
最后,我已经能够让程序显示字符输入出现在字符串中的适当次数。
但是问题是我必须能够在必要时输出输入字符的复数形式。我不知道我在这里做错了什么,但有时它会在不应该出现的情况下变成复数...... ñ。
对不起,如果我的描述很糟糕。

import java.util.Scanner;

public class LabProgram {
public static void main(String[] args) {
Scanner scnr = new Scanner (System.in);
char userLetter;
String userWord;

userLetter = scnr.next().charAt(0);
userWord = scnr.nextLine();

int wordCount = 0;

for (int i = 0; i < userWord.length(); i=i+1) {
if (userWord.charAt(i) == userLetter){
wordCount = wordCount + 1;
}}

if (wordCount < 2) {
System.out.println(wordCount + " " + userLetter);
}
else if (wordCount == 0) {
System.out.println(wordCount + " " + userLetter);
}
else {
System.out.println(wordCount + " " + userLetter + "'s");
}
}
}

最佳答案

首先避免任何分支的替代方法之一是始终在末尾附加“(s)”。:

System.out.println(wordCount + " " + userLetter + "(s)");
正如斯蒂芬 C 提到的,撇号“ ”,虽然有时按照您的意思使用,但通常表示 possession如 n 长度甚至 n 频率。这给我带来了更多的选择:
System.out.println(userLetter + "'s frequency" + ": " + wordCount);
或者
System.out.println("The number of times the letter " + userLetter + " appears is " + wordCount);
除了复数问题外,值得注意的是,在这行执行之后:
userLetter = scnr.next().charAt(0)
在输入源中留下一个尾随的新行。这是一个微妙但最常见的编程错误之一。
执行下一行时:
userWord = scnr.nextLine();
它读入该尾随的新行并忽略您的第二个输入和您的 nextLine()返回一个带有空格的字符串。您可以通过打印 userLetter 的值来验证这一点。和 userWord到控制台。
将前一行更改为:
userLetter = scnr.nextLine().charAt(0);
这将使用带有尾随换行符的输入而不会留下任何痕迹。

关于java - 无法正确计算字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68240751/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com