3

数値の範囲で「1」の数をカウントできるプログラムをJavaで作成しようとしています。

例: 1 から 20 の範囲から見ると、1、2,3....9、1 0、1 1 .... 1 9、2012 個 の 1が得られます。

ここに私が書いたコードがあります。

public class Count_no_of_ones
{
public static void main( String args[] )
{
    int count = 0;

    for ( int i = 1; i<=20; i++ )
    {
      int a=i;
      char b[] = a.toString().toCharArray(); //converting a number to single digit array

      for ( int j = 0; j < b.length; j++ )
      {
        if( Integer.parseInt(b[j]) == 1 )
        {
            count++; // checking and counting if the element in array is 1 or not.
        }
      }
    }

    System.out.println("number of ones is : " + count);
} 

}

コンパイル時に 2 つのエラーが発生します。

D:\Programs\Java>javac Count_no_of_ones.java

Count_no_of_ones.java:10: error: int cannot be dereferenced
char b[] = a.toString().toCharArray(); //converting a number to single digit array
            ^
Count_no_of_ones.java:14: error: no suitable method found for parseInt(char)
if( Integer.parseInt(b[j]) == 1 )
           ^
method Integer.parseInt(String) is not applicable
(actual argument char cannot be converted to String by method invocation conversion)

method Integer.parseInt(String,int) is not applicable
(actual and formal argument lists differ in length)

2 errors
D:\Programs\Java>

コードで何が間違っていたのか説明してもらえますか。私は一度も問題を抱えたことはなくInteger.parseInt、この逆参照の問題は私にとって新しいものです。awt の授業で聞いたばかりだけど、実際に直面したことはない。

4

2 に答える 2

3

Java のプリミティブ型でメソッドを呼び出すことはできません。Integer.toString代わりに静的メソッドを使用してください。

char b[] = Integer.toString(a).toCharArray();

また、実際に文字配列に変換する必要もありません。を使用して文字列にインデックスを付けることができますcharAt


このメソッドparseIntは文字ではなく文字列を受け入れるため、次の行は機能しません。

if( Integer.parseInt(b[j]) == 1 )

代わりに char との比較を行います'1':

if (b[j] == '1')
于 2012-05-27T10:24:54.440 に答える
0

ここで、これはあなたのためにそれをするはずです:

public class Count_no_of_ones
{
public static void main( String args[] )
{
    int count = 0;

    for ( int i = 1; i<=20; i++ )
    {
      int a=i;
      char[] b = (new Integer(i)).toString().toCharArray();


      for ( int j = 0; j < b.length; j++ )
      {
        if( b[j] == '1' )
        {
            count++; // checking and counting if the element in array is 1 or not.
        }
      }
    }

    System.out.println("number of ones is : " + count);
} 

}
于 2012-05-27T10:52:38.737 に答える