2017-11-09 2 views
0

문제가 해결됨Java : 파일에서 가장 높은 값과 가장 낮은 값을 얻는 방법

파일에서 가장 높은 값과 가장 낮은 값을 찾고 싶습니다. 파일의 숫자를 String에서 double로 변환했습니다. Get 메소드를 사용하여 가장 높은 금액과 가장 적은 금액을 찾고 싶다면 어떻게해야합니까?

+0

1은 당신에게 당신의'avg_weekly'가 만 3 주이 있어야 확신이 있습니까? –

+0

당신은 또한 당신이 원하는 "최고"와 "최저"를 말하지 않았습니다. 일주일에 가장 높은 판매입니까? 모든 주 중에서 가장 높은가요? 가장 높은 주간 합계입니까? 그 모든? –

+0

가능한 속담 : https://stackoverflow.com/questions/26793926/how-to-find-the-max-and-min-values-in-an-arraylist. 배열을위한 또 다른 것 : https://stackoverflow.com/questions/13547618/java-find-high-and-low-number-in-an-array 그리고 또 다른 목록 : https://stackoverflow.com/questions/ 8304767/how-to-get-up-at-the-list-arraylist (_max_가 있지만 _min_는 비슷합니다). – Tom

답변

0
Double higher = 0; 
Double lower = 0; 
for (String item:numList) 
     { 
      Double result = Double.parseDouble(item); 
      if (result>higher) { higher = result;} 
      if (result<lower) { lower = result;} 
      //Calculate the total sales for each week 
      total += result; 
     } 
1

편집 : Strings 표준 Collections() 클래스 메소드를 사용하여 사 전적으로 비교 될 몰랐어요로 나는 원래 대답 엉망으로 만들어 완료합니다.

그래서 최선의 방법이 사용 Collections() 파일에서 읽는 동안 당신의 ArrayList에 데이터를 입력해야 사용자에게 Comparator

Comparator<String> sort = (o1, o2) -> Double.valueOf(o1).compareTo(Double.valueOf(o2)); 
String max = Collections.max(numList, sort); 
String min = Collections.min(numList, sort); 

Try it online!

+1

그게 더 좋습니다. 비교 자에 대한 메소드 참조를 사용할 수도 있습니다. 'Comparator sort = Comparator.comparing (Double :: valueOf);'과 같은 것입니다. – Tom

0

을 만드는 것입니다 할 수 있습니다. 그런 다음 merge 또는 quick을 사용하여 숫자 정렬을 시작하십시오.

나는 inbuild Collections.sort() 메소드를 사용하고 있습니다.

package com.collections.java.basic; 

import java.io.BufferedReader; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.ArrayList; 
import java.util.Collections; 
import java.util.List; 

public class SortingDataWhileReading { 
    public static void main(String[] args) throws IOException { 
      BufferedReader br = new BufferedReader(new FileReader("E:\\BUILD\\numbers.txt"));//this file contains several double data. 
      List<Double> numbers = new ArrayList<Double>(); 
      String line = null; 

      //String line = br.readLine(); 

      while ((line = br.readLine()) != null) { 
       String []strNumbers = line.split(" "); 
       for(String strNumber : strNumbers){ 
        numbers.add((double) Double.parseDouble(strNumber)); 
       } 

      } 

      br.close(); 

      Collections.sort(numbers); 

      System.out.println("minimum value" + numbers.get(0)); 
      System.out.println("minimum value" + numbers.get(numbers.size() - 1)); 

      System.out.println(numbers); 
    } 
} 

이렇게하면 문제가 해결됩니다.

0
public static double getMin(List<String> list) { 
    double min = Double.MAX_VALUE; 
    for (String s : list) { 
     double d = Double.valueOf(s); 
     min = min > d ? d : min; 
    } 
    return min; 
} 

public static double getMax(List<String> list) { 
    double max = Double.MIN_VALUE; 

    for (String s : list) { 
     double d = Double.valueOf(s); 
     max = max < d ? d : max; 

    } 
    return max; 
} 

Java8 예 : treeset

public static double getMinJ8(List<String> list) { 
    return list.stream().map(s -> Double.valueOf(s)).min((d1, d2) -> d1.compareTo(d2)).get(); 
} 
public static double getMaxJ8(List<String> list) { 
    return list.stream().map(s -> Double.valueOf(s)).max((d1, d2) -> d1.compareTo(d2)).get(); 
} 
0

저장소 모든 값이므로 모든 요소가 정렬된다. 지금 firstlast

예제 코드를 사용

TreeSet s=new TreeSet(); 
    //add elements to the set 
    s.add(100); 
    s.add(200); 
    s.add(1); 
    // use first() method to get the lowest 
    System.out.println(s.first()); 
    //use last method to get the highest 
    System.out.println(s.last()); 

출력 :

200

관련 문제