3

我正在尝试用java编写一个程序,它可以计算一系列数字中“1”的数量。

例如:如果我们从 1 - 20 范围内查看,我们将得到12 个 1 的
1、2,3 .... 9、1 0、1 1 .... 1 9、20

这是我写的代码。

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);
} 

}

我在编译时遇到两个错误。

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 回答