2017-04-21 38 views
-1

所以,我有這個項目,他們告訴我,我必須收到一個積極的int,並將其更改爲一個字符串帶,我必須使用它的數字由didgit。打印一個沒有任何0的字符串

private static String intToString(int n) { 
    if (n < 0) 
     throw new IllegalArgumentException("o nº recebido tem de ser 
positivo: " + n); 

    // else if((x != (int)x)){ 
    // throw new IllegalArgumentException("") 
    // } 

    else { 
     String text = ""; 
     int array[] = new int[(int) (Math.log10(n) + 1)]; 
     for (int x = 0; x < array.length; x++) { 
      array[x] = n % 10; 
      n = n/10; 
     } 
     for (int x = array.length - 1; x >= 0; x--) { 
      text = text + String.valueOf(array[x]); 

     } 
     System.out.println(text); 
    } 
    return null; 
} 

我已經這樣做了之後,接下來的部分是刪除所有0的該字符串,我這樣做:

private static int removeZeros(int n) { 
    String text = intToString(n); 
    for (int l = 0; l < text.length(); l++) { 
     if (text[l] != "0") { 
      System.out.println("Sick");; 
     } 
    } 
    return 0; 
} 

但它給我這個錯誤: 類型的表達式必須是數組類型,但它解析爲String。

我能做些什麼來解決這個錯誤?

+1

'return String.valueOf(n).replace(「0」,「」);' – 4castle

+0

你的第一個方法不會返回任何東西!它總是返回空 – Yahya

回答

0

串不能用[]它不是一個數組編制索引,相反,你應該將其轉換爲字符數組

你removeZeros應該是:

private static int removeZeros(int n) { 
    String text = intToString(n); 
    char[] ch=text .toCharArray(); 
    for (int l = 0; l < ch.length; l++) { 
     if (ch[l] != '0') { 
      System.out.println("Sick");; 
     } 
    } 
    return 0; 
} 
+0

這是錯誤的。文本仍然是一個字符串,你不能做文本[l],而且ch [l]會給你一個字符串不是一個字符串,所以在用ch修改文本之後,你應該把它和'0'比較。最後你應該做ch.lenght,而不是ch.length()。 – dingalapadum

+0

更新遺憾的錯誤。 –

+0

它是'0'不是'0'。並且在嘗試撥打電話時,在「文本」後面有一個空格? 'toCharArray()' – dingalapadum

1

一個字符串不是一個數組,儘管它當然是在引擎蓋下實現的。

對於字符串,你可以做

text.charAt(l) 

,而不是

text[l] 

然後進行比較,以 '0'(角色),而不是 「0」(這是一個字符串)。

0

假設你intToString功能是正確的,這樣做

private static int removeZeros(int n) { 
char[] text = intToString(n).toCharArray(); 
for (int l = 0; l < text.length(); l++) { 
    if (text[l] != "0") { 
     System.out.println("Sick");; 
    } 
} 
return 0; 
} 

您需要的字符數組(CHAR [])數據類型通過String.Only迭代那麼你可以做文字[I]內循環。