2017-01-21 6 views
0
public class count { 
private static int countPositive(int[] elems) { 
    int positive = 0; 
    for (int i=0;i<elems.length;i++) { 
     if (elems[i] > 0){ 
       positive++; 
     } 
    } 
    return positive; 
} 
public static void main(String[] args) { 

    for(int i=0;i<args.length;i++) 
     //int x =Integer.parseInt(args[i]); 
    //System.out.println(countPositive(new int[])); 
} 
} 

ここでは、すべてのstr "numbers"をint型に変換したいのですが、どうやって書くのか分かりません。これらの整数を保存するために別の配列を追加しなければならないのですか?次にcountPositiveを呼び出しますか?コマンドライン引数の書き方と、文字列をint型に変換する方法を教えてください。

私の目的は、コマンドライン引数を記述することですいくつかの助けを提供し、それは

> java count 1 2 3 4 5 -1 -2 -3 
5 

> java count 0 -1 -2 -3 -3 -4 
0 
+0

ようStream(複数可)とそれをすべて行うので、エラーや問題は何ですか? – Kaushal28

+0

"これらの整数を保存するために別の配列を追加してから、countPositiveを呼び出す必要がありますか?"はい。 – Kayaman

答えて

0

2つ目の配列を追加するか、正の数をオンザフライでカウントするかの2つの選択肢があります。

まずソリューション - 最初のint型に文字列を変換した後、陽性のものを数える:

public class count { 
    private static int countPositive(int[] elems) { 
     int positive = 0; 
     for (int i = 0; i < elems.length; i++) { 
      if (elems[i] > 0) { 
       positive++; 
      } 
     } 
     return positive; 
    } 

    public static void main(String[] args) { 

     int[] intArr = new int[args.length]; 
     for (int i = 0; i < args.length; i++) { 
      intArr[i] = Integer.parseInt(args[i]); 
     } 
     System.out.println(countPositive(intArr)); 
    } 
} 

第二の溶液を - 一度にint型1に文字列を変換し、そしてポジティブなもの数える:

public class count { 
    public static void main(String[] args) { 
     int positive = 0; 
     for (int i = 0; i < args.length; i++) { 
      if (Integer.parseInt(args[i]) > 0) { 
       positive++; 
      } 
     } 
     System.out.println(positive); 
    } 
} 

Streamsを使用してボーナス、第三ソリューション:

public class count { 
    public static void main(String[] args) { 
     System.out.println(Arrays.stream(args).mapToInt(i -> Integer.parseInt(i)).filter(i -> i>0).count()); 
    } 
} 
1

あなたの現在のコードは、努力を示して正しい軌道に乗っている例えば、私に正の数の数を与える、としてください実際には実際の解決策を得るために必要なすべての要素が実際に含まれています。 countPositive()メソッドをリファクタリングして、コマンドライン引数の文字列配列を直接受け入れるようにしました。整数配列を作成する理由はないことに注意してください。単純に各コマンドライン引数を解析し、その場で解析することができます。

public class count { 
    private static int countPositive(String[] elems) { 
     int positive = 0; 
     for (int i=0; i < elems.length; i++) { 
      int element = Integer.parseInt(elems[i]); 
      if (element > 0) { 
       positive++; 
      } 
     } 

     return positive; 
    } 

    public static void main(String[] args) { 
     int count = countPositive(args); 
     System.out.println(count)); 
    } 
} 
+0

これは、新しい 'int'配列を追加するよりも優れています。 +1。 – CKing

0

あなたが警官によって開始することができますString[] argsint[]に設定してください(それを使用してcountPositiveに電話してください)。同様に、Javaの8+で

public static void main(String[] args) { 
    int[] values = new int[args.length]; 
    for (int i = 0; i < args.length; i++) { 
     values[i] = Integer.parseInt(args[i]); 
    } 
    System.out.println(countPositive(values)); 
} 

またはは、

System.out.println(Stream.of(args).mapToInt(Integer::parseInt) 
     .filter(val -> val > 0).count());