【发布时间】:2021-07-04 00:02:29
【问题描述】:
我应该有两个输入:一个是字符,另一个是字符串。
我必须编写一个程序来输出字符在字符串中出现的次数。
最后,我已经能够让程序显示字符输入在字符串中出现的正确次数。
但问题是我必须能够在必要时输出输入字符的复数形式。我不知道我在这里做错了什么,但有时它会在不应该是复数的情况下......基本上,如果那个单词中有0 n,它应该显示0 n......但它显示0恩。
对不起,如果我的描述很糟糕。
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");
}
}
}
【问题讨论】:
-
我无法使用您提供的代码重现此问题。你确定这是你正在测试的代码吗?
-
0小于2,或许您可以告诉我们您提供的输入是什么? -
正如查理所说,您的代码不包含您所描述的问题。而且它也无法正确读取输入,请参阅:Scanner is skipping nextLine() after using next() or nextFoo()?(但这不会导致所描述的复数问题)
-
更重要的是......“0 N”是错误的语法。在英语中>正确任何的情况下都不应该有撇号。
-
最正确的形式是
0 "N"s或1 "N"或2 "N"s(或0 'N's或1 'N'或2 'N's,如果您愿意的话。)注意:我们使用引号,不是撇号。撇号 -s(通常)表示拥有。