2012-05-27 28 views
3

我想寫一個程序在java中可以計數數字範圍內的數字'1'。變量dereferancing錯誤不解決

爲例子:如果我們從範圍看1 - 20,我們將得到 1的
,2,3 .... 9, 0, ... 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類中聽說過它,但我從來沒有真正面對過它。

回答

3

您無法在Java中調用原始類型的方法。使用靜態方法Integer.toString代替:

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

也實際上並不需要轉換爲字符數組。您可以使用charAt將其索引到一個字符串中。


parseInt接受一個字符串,而不是一個字符,所以這條線不能正常工作的方法:

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

而是跟焦'1'比較:

if (b[j] == '1') 
+0

非常感謝。你能解釋爲什麼我在'Integet.parseInt'中出錯。 –

+0

我需要統計數字中的所有1,例如:1011001有4個1。我不知道charAt是否可以在這裏幫忙。 –

+0

@abhinav:'parseInt()'方法只接受'String'作爲參數,但是您通過'b [j]'提供了一個'character'。 – WickeD

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

} 
+0

@david:abhinav在mark的回答中提出了另一個問題,我對他的要求進行了修改。不想從商標中獲取任何東西。 – WickeD