2017-12-12 1 views
0

반복 할 수있는 요소 하나를 꺼내어 배열의 최소값을 찾는 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

* "반복 될 수있는 하나의 요소를 꺼내어 배열의 최소값을 찾습니다. * : 나에게 의미가 없습니다. 배열의 최소값과의 연결은 무엇입니까? – Pac0

+0

ur 문제의 제목과 세부 사항은 완전히 다릅니다 .. u는 최소값을 지우거나 최소값을 찾고 싶습니까? – ajc

답변

0

:

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

이 각 한 번씩 합계를 호출 요소.