2012-03-01 16 views
0

ここで私が取り組んでいる問題があります。JAVA - SCANNERで文字を読む

文字列を入力してから文字を入力する必要があります(任意の文字は問題ありません)。そして、文字がスキャナに現れる回数を数えます。

スキャナに文字を追加する方法がわかりません。私たちは、配列を行っていない、まだ私はしたくはそこに行くしませんが、これは私がこれまで行っているものです:

import java.util.Scanner; 

public class Counter { 

    public static void main (String args[]){ 

     String a; 
     char b; 
     int count; 
     int i; 


     Scanner s = new Scanner (System.in); 


     System.out.println("Enter a string"); 

     a = s.nextLine(); 

     System.out.println("Enter a character"); 

     b = s.next().charAt(0); 

     count = 0; 
     for (i = 0; i <= a.length(); i++){ 

      if (b == s.next().charAt(b)){ 

       count += 1; 

     System.out.println(" Number of times the character appears in the string is " + count); 

       else if{ 

        System.out.println("The character appears 0 times in this string"); 
      } 


      } 

     } 

私は、これは間違っている知っているが、私は今、これを把握することはできません。

ご協力いただければ幸いです。

+0

私は強く、それはあなたがまだやりたいことではないかもしれない場合でも、* *コンパイルコードで始まるをお勧めします。少なくともコードのコンパイルでは、それを実行して動作するかどうかを確認することができます。あなたのコードはちょっとした変更が必要です。 –

答えて

1

[String、char]入力を確認するには、ユーザーから文字を取得するためのwhileループを使用します。基本的には、ユーザがを入力したかどうかを、文字入力用の長さ1の文字列でチェックします。

import java.util.Scanner; 

public class Counter 
{ 
    public static void main (String args[]) 
    { 
     String a = "", b = ""; 
     Scanner s = new Scanner(System.in); 

     System.out.println("Enter a string: "); 
     a = s.nextLine(); 
     while (b.length() != 1) 
     { 
      System.out.println("Enter a single character: "); 
      b = s.next(); 
     } 

     int counter = 0; 
     for (int i = 0; i < a.length(); i++) 
     { 
      if (b.equals(a.charAt(i) +"")) 
       counter++; 
     } 
     System.out.println("Number of occurrences: " + counter); 
    } 
} 
0

まず、forループ条件は次のように変更します。:

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

インデックスは0から始まりますが、あなたここで はあなたのコードのバージョンを実行とをコンパイルですカウントの長さは1から始まります。したがって、 '='は必要ありません。

第二に、ループのために、あなただけの一つのことを行う必要があります。Bでの各文字を比較します

ここ
if (b == a.charAt(i)) 
    count += 1; 

、他のソリューションと比較して、charは文字列を比較することよりも安いです。

第三に、forループの後、出力は、カウントに依存します:

if (count > 0) 
    System.out.println(" Number of times the character appears in the string is " 
         + count); 
else // must be count == 0 
    System.out.println("The character appears 0 times in this string"); 
関連する問題