2015-12-03 30 views
-3

我只會從用戶那裏獲得3個值,所以只有3個可能的答案。您還可以假設用戶不會輸入0三次,並且三次輸入相同的值也無關緊要。我可以爲這些場景創建自己的東西(而且我已經擁有)。如何比較三個雙打併找到最大值,最小值和中等值? (儘可能最短)

import java.util.Scanner; 
import java.io.*; 
import java.util.*; 

public class Triangles 
{ 
    public static void main (String[]args) throws IOException 
     { 
     String a = "You have an"; 
     String b = "triangle"; 

     double l; 
     Scanner lengthinput = new Scanner(System.in); 

     double h; 
     Scanner heightinput = new Scanner(System.in); 

     double w; 
     Scanner widthinput = new Scanner(System.in); 

     System.out.println("Enter the length."); 
     l = lengthinput.nextDouble(); 

     System.out.println("Enter the height."); 
     h = heightinput.nextDouble(); 

     System.out.println("Enter the width."); 
     w = widthinput.nextDouble(); 

     double max = l; 

     if (w > max) max = w; 
     if (h > max) {max = h; 

我掙扎的原因是因爲以下幾點:

我知道最大的,現在我應該只是複製的最大代碼來創建一個最小的(因爲這就是我所學到,只是還沒有(介紹CS類))。但是,我怎麼知道如何排除我隨機選擇的最小值?然後對於中等價值也是如此。

+2

我與你,直到最後兩句話。 「排除最小值」等? 「隨機選擇」?我沒有看到任何隨機選擇。請澄清。 –

+0

所以我基本上做雙最大= l,開始我的比較。但是這是「隨機」選擇的,因爲我不知道實際的最大值是多少。 – Tastybot

+1

要計算最大值,請將初始值設置爲Integer.MIN_VALUE。要計算最小值,請將初始值設置爲Integer.MAX_VALUE。這應該可以解決這個問題。 –

回答

-1

你可以嘗試像下面:

float l = 2.0f; 
    float h = 3.0f; 
    float w = 1.5f; 
    float[] arr = new float[] {l, h, w}; 
    Arrays.sort(arr); 
    System.out.println("Min: " + arr[0] + ", Medium: " + arr[1] + ", Max: " + arr[2]); 
+0

它看起來很有前途,但我不知道如何控制數組,特別是在我的其他代碼中使用它。這對我來說會很複雜,但我認爲其他人可能會覺得它很有用。 – Tastybot

+1

在任何情況下,你大概都會在CS類中被指示算法,所以只要把數據放到'Array.sort'中就不會教你。 – Alnitak

+1

@Alnitak沒有在問題陳述中提到它不應該使用排序。如果使用if-else結構,該解決方案可以爲3個值工作,但隨着float參數數量的增加,代碼將變得更加混亂。在非排序的方法中,只是將解決方案擴展到4個浮標本身讓我感到害怕:-) –

5

你可以找到三個值的最小,中,最大是這樣的:

double a = ...; 
double b = ...; 
double c = ...; 

if (a > b) { 
    double swap = a; 
    a = b; 
    b = swap; 
} 

if (b > c) { 
    double swap = b; 
    b = c; 
    c = swap; 
} 

if (a > b) { 
    double swap = a; 
    a = b; 
    b = swap; 
} 

System.out.println("Min: "+a); 
System.out.println("Med: "+b); 
System.out.println("Max: "+c); 
+1

對於其他讀者 - 這僅僅是一個三重物品的簡單硬編碼的氣泡排序 – Alnitak

+0

@Alnitak我發誓永遠不要寫一個bubblesort!可能不值得嘗試對三個值進行合併排序。 – khelwood

+0

+1對於其他讀者,@Alntiak是正確的。這個算法將bc從最小到最大排序。如果a更大,則翻轉a和b。如果b當前更大,則b和c會翻轉。最後,如果a中的任何一個更大,則a和b會翻轉。 – Kayla

相關問題