2017-11-15 15 views
-1

文字が文字列に現れる回数を数えなければなりません。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あります。

私は間違いを理解していません。すべての助けをいただければ幸いです。

+0

'i <= length'の代わりに' i smarx

+0

その例外はかなり明確です。文字列インデックスが範囲外であると思うでしょうか?特に、文字列インデックスが範囲外です:11 * 'String.charAt()'を参照している場合は特にそうですか?投稿したコードで 'String.charAt()'はどこにありますか?文字列インデックスが範囲外*の例外をスローする原因は何ですか? –

答えて

0

エラーコードの下の行に発生している -

for (i = 0; i <= length; i++) 

ここ反復は、入力された長さ[範囲を超え]よりも長いです。 改訂コードは -

for (i = 0; i < length; i++) 

さらに必要ですか?私にコメントをしてください。

うまくいけばうまくいくはずです。

1

あなたはあまりにも長い間反復しているように見えます:私は「

if (letter1 == letter2) 
{ 
    count++ 
} 

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

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

する必要があります私はあなたがこのコード行を書いたことに気づきましたcount ++を使わないようにすると、いつか++カウントと混ざってしまうことがあります。次の文章は常に良いです。

if (letter1 == letter2) { 
    count + =1; 
} 
関連する問題