需要使用方法来计数字符的帮助。无论输入是字符串、字符还是字符、字符串,都需要打印字符的出现次数

问题描述 投票:0回答:1

我在提示中遇到困难,因为当用户输入遵循“字符串”格式(例如“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
方法。这是解决我的问题的懒惰尝试,我发现它不起作用

java
1个回答
0
投票

处理输入的一种方法是将整行作为单个

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);

    }
© www.soinside.com 2019 - 2024. All rights reserved.