3

文字列内の文字の出現をカウントする for ループを Java で記述しようとしています。ユーザーは、カウントする文字と検索する文字列を入力します。これは非常に基本的なコードであり、配列などにはまだ到達していません。(私は手紙を2回宣言したことに気づきましたが、この時点で私の脳は死んでいます)これは私がこれまでに試して問題を抱えていることです。

提案ごとにコードを変更しましたが、今は文の最初の単語しか読み取っていませんか?

import java.util.Scanner;

public class CountCharacters {
public static void main(String[] args) {
    Scanner in = new Scanner(System.in);

    char letter;
    String sentence = "";
    System.out.println("Enter a character for which to search");
    letter = in.next().charAt(0);
    System.out.println("Enter the string to search");
    sentence = in.next();

    int count = 0;
    for (int i = 0; i < sentence.length(); i++) {
        char ch = sentence.charAt(i);
        if (ch == letter) {
            count++;
        }
    }
    System.out.printf("There are %d occurrences of %s in %s", count,
            letter, sentence);

}
}
4

10 に答える 10

1

いくつかの問題があります。まず、同じ名前の 2 つの変数があります。

次にif、文字が等しいかどうかをチェックする代わりに、文の長さが 0 より大きいことを条件チェックします。

Scanner in = new Scanner(System.in);

char inLetter = "";
String sentence = "";
System.out.println("Enter a character for which to search");
inLetter = in.next().charAt(0);
System.out.println("Enter the string to search");
sentence = in.next();

int letter = 0;
for (int i = 0; i < sentence.length(); i++) {
    char ch = sentence.charAt(i);
    if (inLetter == ch) {
        letter++;
    }
}

System.out.print(sentence.charAt(letter));

また、最初の入力から 1 文字、2 番目の入力から 1 文を得たと仮定するのではなく、入力を検証することを強くお勧めします (上記の例では行われていません)。

于 2013-10-25T04:17:04.900 に答える
0

ループする必要はありません:

    String sentence = "abcabcabcd";
    String letter = "b";
    int numOfOccurences = sentence.length() - 
                          sentence.replaceAll(letter, "").length();
    System.out.println("numOfOccurences = "+numOfOccurences);

出力:

numOfOccurences = 3
于 2013-10-25T04:19:09.520 に答える
0

これを試して:

Char letter = '';
String sentence = "";
System.out.println("Enter a character for which to search");
letter = in.next().charAt(0);
System.out.println("Enter the string to search");
sentence = in.next();

int count= 0;
for (int i = 0; i < sentence.length(); i++) {
    char ch = sentence.charAt(i);
    if (ch==letter) {
        count++;
    }
}
System.out.print(letter+" occurance:"+count);
于 2013-10-25T04:12:55.470 に答える
0

これを試して

忘れるString letter = ""<-- 削除する
忘れるletter = in.next()<-- 削除する

    // There's no nextChar() method, so this is a work aroung
    char ch = in.findWithinHorizon(".", 0).charAt(0);

    int letter = 0;
    for (int i = 0; i < sentence.length(); i++) {

        if (sentence.charAt(i) == ch) {
            letter++;
        }
    }

    System.out.println(letter);  // print number of times letter appears

    // You don't want this
    System.out.print(sentence.charAt(letter)); // Makes no sense
于 2013-10-25T04:14:39.360 に答える
0

これがお役に立てば幸いです。

import java.util.Scanner;

public class CountCharacters {
    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);

        System.out.println("Enter the string to search");
        String sentence = in.nextLine();

        System.out.println("Enter a character for which to search");
        String letter = in.next();

        int noOfOccurance = 0;

        for (int i = 0; i < sentence.length(); i++) {
            char dh=letter.charAt(0);
            char ch = sentence.charAt(i);
            if (dh==ch) {
               noOfOccurance++;
            }
       }
       System.out.print(noOfOccurance);
    }
}

サンプル入力出力:

Enter the string to search
how are you
Enter a character for which to search
o
No of Occurances : 2
于 2013-10-25T04:28:50.887 に答える
0

あなた if (sentence.length() <= 0) {は正しくありません。次のように条件を変更します。

System.out.println("Enter a character for which to search");
letter = in.next();
System.out.println("Enter the string to search");
sentence = in.next();
char searchLet=letter.charAt(0); // Convert String to char
int letter = 0;
for (int i = 0; i < sentence.length(); i++) {
    char ch = sentence.charAt(i);
    if (searchLet== ch) {  // Check the occurrence of desired letter.
        letter++;
    }
}

System.out.print(sentence.charAt(letter));
于 2013-10-25T04:11:43.077 に答える
0
if (sentence.length() <= 0) {
            letter++;
}

あなたのプログラムのコードの上記の部分は間違っています。空の文字列を入力するまで、これは真になりません。

そして基本的に、これは正しい論理ではありません。直接比較を使用する必要があります。

于 2013-10-25T04:16:14.440 に答える
0
  1. 検索したい文字を知る必要があります。char charToSearch = letter.toCharArray()[0];を使用できます 。
  2. countなどの変数を定義して、特定の文字列内の文字の出現回数をカウントします。
  3. 文字列をループして各文字を比較し、文字が検索する文字と等しい場合は count++;

例--->

int count = 0;
char charToSearch = letter.toCharArray()[0];
for (int i = 0; i < sentence.length(); i++) {
    if (sentence.charAt(i) ==  charToSearch) {
        count++;
    }
}

System.out.printf("Occurrences of a %s in %s is %d", letter, sentence, count);
于 2013-10-25T04:27:32.663 に答える