我在提示中遇到困难,因为当用户输入遵循“字符串”格式(例如“n Monday”)时,我当前的代码可以正常工作。但是,它无法处理输入格式反转的情况,例如“字符串,字符”(例如“今天是星期一,z”)或提供的字符和字符串不带逗号(例如“X,x”) ”)。代码需要能够处理“字符串”和“字符串字符”。
编写一个程序,其输入是一个字符和一个字符串,其输出表示该字符在字符串中出现的次数。如果字符出现的次数不完全是 1,则输出应包含输入字符并使用复数形式 n's。
例如:如果输入是:
周一
输出是:
1 n
例如:如果输入是:
z 今天是星期一
输出是:
0 z
例如:如果输入是:
今天是个阳光明媚的日子
输出是:
2 个
案例很重要。 n 与 N 不同。
例如:如果输入是:
无人
输出是:
0 个
程序必须定义并调用以下方法,该方法以输入字符串和字符为参数,并返回输入字符在输入字符串中出现的次数。
public static int calcNumCharacters(String userString, char userChar)
这是我到目前为止的代码:
import java.util.Scanner;
public class LabProgram {
/* Define your method here */
public static String calcNumCharacters(char userChar, String userString) {
int count = 0;
// Count occurrences of userChar
for (int i = 0; i < userString.length(); ++i) {
if (userString.charAt(i) == userChar) {
++count;
}
}
// output
String output = count + " " + userChar;
if (count != 1) {
output += "'s";
}
return output;
}
public static void main(String[] args) {
/* Type your code here. */
Scanner scnr = new Scanner (System.in);
//
char c = scnr.next().charAt(0);
String userInput = scnr.nextLine();
// condition: char and string
String result = calcNumCharacters(c, userInput);
System.out.println(result);
}
}
我确实尝试过两种方法
public static String calcNumCharacters(char userChar, String userString)
我尝试过
public static String calcNumCharacters(String userString, char userChar)
在我的
main
方法中我做了两个方法调用
String result = calcNumCharacters(c, userInput);
String result2 = calcNumCharacters(userInput, c);
认为如果输入是
Today is Monday, z
,它会选择第二个calcNumCharacter
方法。这是解决我的问题的懒惰尝试,我发现它不起作用
处理输入的一种方法是将整行作为单个
String
读取并找到字符。
当您遇到问题时,请在代码中散布
System.out.println
语句。
输入是:
c text
text, c
我们将使用该逗号。 我们还将使用
String
方法 charAt
、split
和 substring
。
这是修改后的
run
方法。
public static void main(String[] args) {
/* Type your code here. */
Scanner scnr = new Scanner(System.in);
//
String userInput = scnr.nextLine();
char c;
String text;
String[] parts = userInput.split(", ");
System.out.println(Arrays.toString(parts));
if (parts.length == 2) {
text = parts[0];
c = parts[1].charAt(0);
} else if (parts.length == 1 && !parts[0].isEmpty()) {
int length = parts[0].length();
c = parts[0].charAt(0);
text = parts[0].substring(2, length);
} else {
System.err.println("Nothing was input.");
return;
}
System.out.println("" + c + " " + text);
// condition: char and string
// String result = calcNumCharacters(c, userInput);
// System.out.println(result);
}