文字が文字列に現れる回数を数えなければなりません。Java:文字列中の文字を数える方法
私はこの質問が以前に尋ねられたことを知っています。しかし、私が見た解決策は、まだクラスでカバーしていないコマンド/テクニックを使用しています。ここで
は私のコードです:ここでは
import java.util.Scanner;
/*
This program counts the number of occourances of a char in a string.
*/
public class LetterCounter
{
public static void main(String[] args)
{
int i, length, count=0;
String input;
char letter1, letter2;
// Create a Scanner object for keyboard input.
Scanner stdin = new Scanner(System.in);
// Get a string from user
System.out.print("Enter a string: ");
input = stdin.nextLine();
// Get a character from user
System.out.print("Enter a character: ");
letter1 = stdin.next().charAt(0);
//Determine the length of the string
length = input.length();
//Count the number of times the user selected character appears in the string
for (i = 0; i <= length; i++)
{
letter2 = input.charAt(i);
if (letter1 == letter2)
{
count++;
}
}
System.out.printf("Occurrences of a %s in %s is %d", letter1, input, count);
} }
はjgraspから出力されます:
---- jGRASP幹部: は、文字列を入力しますLetterCounterのjava:こんにちは世界 文字を入力します。l スレッド "main"の例外java.lang.StringIndexOutOfBoundsException:文字列インデックスが範囲外です。:11 at java.lang.String.charA T(String.java:658)LetterCounter.main(LetterCounter.java:37)で
---- jGRASP wedge2:動作完了:プロセスの終了コードが1 ---- jGRASPあります。
私は間違いを理解していません。すべての助けをいただければ幸いです。
'i <= length'の代わりに' i
smarx
その例外はかなり明確です。文字列インデックスが範囲外であると思うでしょうか?特に、文字列インデックスが範囲外です:11 * 'String.charAt()'を参照している場合は特にそうですか?投稿したコードで 'String.charAt()'はどこにありますか?文字列インデックスが範囲外*の例外をスローする原因は何ですか? –