2016-07-26 20 views
0

私はString配列を持ち、文字列と整数の両方を持っています。私はすべての整数配列要素の合計を計算したいと思います。Javaの文字列配列要素の合計

class Array{ 
String container[] = {"Joe","12","Chandler","15","67","Rajat",'a'}; 
int sum; 
for(String element:container){ 
    int num = Integer.parseInt(element); 
    sum += num; 
} 
void print(){ 
    System.out.print(sum); 
} 
} 
class ArrayDemo{ 
public static void main(String args[]){ 
    Array a = new Array(); 
    a.print(); 
} 
} 

しかしJoeChandlerRajatは整数ではありませんので、コードint num = Integer.parseInt(element)はNumberFormatExceptionがを与えます。だから、この問題を解決する方法。このため

class Array{ 
String container = {"Joe","12","Chandler","15","67","Rajat",'a'}; 
int sum; 
for(String element:container){ 
    try { 
     int num = Integer.parseInt(element); 
    catch(Exception e) { 
     continue; 
    } 
    sum += num; 
} 
void print(){ 
    System.out.print(sum); 
} 
} 
class ArrayDemo{ 
public static void main(String args[]){ 
    Array a = new Array(); 
    a.print(); 
} 
} 

使用try-catch: 答えは、あなたがその例外を処理する必要があり、事前

+0

あなたはサンプルコードは、エラーの種類エラー – Saif

+0

の膨大な量を持っている?含めますか – user3520629

+0

コンパイルしますか? – Saif

答えて

2

は、try catchブロック内のあなたのパース

for(String element:container){ 
    try { 
    int num = Integer.parseInt(element); 
    sum += num; 
    catch (NumberFormatException nfe){ 
    System.out.println ("Element " + element + " in the array is not an integer"); 
    } 
} 
+0

あなたのコードが動作していると私の問題を解決した他のブロックをtryを閉じることを忘れてしまった。 – user3520629

-1

12+15+67=94

感謝の合計である必要があります。例外が発生した場合は、forループの次の繰り返しに進むだけです。数字の場合はsumに追加されます。

もう1つの方法は、文字列内の各文字を数値でチェックすることです。

NumberUtils.isNumber(String str) 

または

StringUtils.isNumeric(String str) 

これはあなたの本当の与え

は、 sumに追加します。これには、(あなたは、Apache Commonsのライブラリを含める必要があります)、既存のものを使用し、非常に長いコードです。

+2

これは信じられないほど悪いことです: 'catch(Exception e){ ; } ' – Idos

+0

なぜ悪い習慣になるのですか? –

+0

多かれ少なかれ[これ](http://stackoverflow.com/questions/2416316/why-is-the-catchexception-almost-always-a-bad-idea) – Idos

関連する問題