andy6804tw
10/12/2016 - 4:06 PM

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=2277 這題就按照題意找出outlier,注意題目範例輸出第二個有誤事排序後去比較另外每個資料只空一行而已 Q1的位置= n × 0.25 Q2的位置

http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=2277

這題就按照題意找出outlier,注意題目範例輸出第二個有誤事排序後去比較另外每個資料只空一行而已 Q1的位置= n × 0.25 Q2的位置= n × 0.5 Q3的位置= n × 0.75

Input: 7.0 4.0 5.0 4.0 100.0 2.0 8.0 9.0 -100.0 Output: The outlier is -100.0 The outlier is 100.0

import java.util.*;  
  
public class Main {  
  
    public static void main(String[] args) {  
        Scanner scn = new Scanner(System.in);  
	    String s[]=scn.nextLine().split(" ");
	    double arr[]=new double [s.length];
	    Boolean b=true;
	    for(int i=0;i<s.length;i++){
	    	arr[i]=Double.parseDouble(s[i]);
	    }
	    Arrays.sort(arr);
	    int length=s.length-1;
	    double fs=arr[(int)(length*0.75)]-arr[(int)(length*0.25)],out_one=arr[(int)(length*0.25)]-1.5*fs,out_two=arr[(int)(length*0.75)]+1.5*fs;
	    for(int i=0;i<s.length;i++){
	    	if(arr[i]>out_two||arr[i]<out_one){
	    		b=false;
	    		System.out.printf("The outlier is %.1f\n",arr[i]);
	    	}
	    }//System.out.println(fs+" "+out_one+" "+out_two);
	    if(b)
	    	System.out.println("There is no outlier.");
    }
    /*題目:[C_SO07-] 找出不合群的人
    作者:1010
    時間:西元 2016 年 10 月 */
}