2017-12-12 17 views
0

繰り返している可能性のある要素を1つ取り出して配列の最小値を見つけるJavaプログラムを作成しようとしています。以下は私のコードです。最小値の配列の値を消去するJava

// Don't place your source in a package 
import java.util.*; 
import java.lang.*; 
import java.io.*; 

// Please name your class Main 
class Main { 
    public static void main (String[] args) throws java.lang.Exception { 
     Scanner in = new Scanner(System.in); 
     int N = in.nextInt(); 
     int[] elements = new int[N]; 
     for (int i = 0; i < N; i++){ 
      elements[i] = in.nextInt(); 
     } 
     int counter = 1001; 
     for (int c = 0; c < elements.length; c++){ 
      if (sum(elements, c) <= counter){ 
       counter = sum(elements, c); 
      } 
     } 
     System.out.print(counter); 

    } 
    public static int sum (int[] e, int n){ 
     for (int j = 0; j<e.length; j++){ 
      if (e[j] == n){ 
       e[j] = 0; 
      } 
     } 
     int sum = 0; 
     for (int x: e){ 
      sum+=x; 
     } 
     return sum; 
    } 
} 

私は簡単な間違いをしているように感じますが、コードを見て時間を費やしました。おかげであなただけの単一の要素を削除すると、その後、あなたはあなたのメインループを変更する必要がありますが、潜在的に複数回繰り返し要素を持っていたと仮定すると

+0

なぜ値が1001ですか? ..待つ!なぜこの論理と何をするのですか? –

+3

* "繰り返すかもしれない1つの要素を取り出して配列の最小値を探します:*私には意味がありません。配列の最小値とのリンクは何ですか? – Pac0

+0

urの問題のタイトルと詳細は全く異なります..あなたは最小値を消去したい、または最小値を見つけたいですか? – ajc

答えて

0

int counter = Integer.MAX_VALUE; 
for (int c = 0; c < elements.length; c++) { 
    counter = Math.min(counter, sum(elements, c)); 
} 

これだけごとに一回の合計を呼び出します素子。

関連する問題