2012-02-16 13 views
12

मैं सोच रहा था कि कोई मुझे चर के सेट के अधिकतम मूल्य को खोजने में मदद कर सकता है और उन्हें किसी अन्य चर को असाइन कर सकता है। यहां मेरे कोड का एक स्निपेट है जो समझने में मदद कर सकता है कि मैं किस बारे में बात कर रहा हूं।चर के सेट का अधिकतम मूल्य कैसे खोजें

// Ask for quarter values. 
    System.out.println("What is the value of the first quarter?"); 
    firstQuarter = input.nextDouble(); 

    System.out.println("What is the value of the second quarter?"); 
    secondQuarter = input.nextDouble(); 

    System.out.println("What is the value of the third quarter?"); 
    thirdQuarter = input.nextDouble(); 

    System.out.println("What is the value of the fourth quarter?"); 
    fourthQuarter = input.nextDouble(); 

    //Tell client the maximum value/price of the stock during the year.  
    //maxStock = This is where I need help 
    System.out.println("The maximum price of a stock share in the year is: $" + maxStock + "."); 

उत्तर

22

जावा में पर, आप Math.max इस तरह उपयोग कर सकते हैं:

double maxStock = Math.max(firstQuarter, Math.max(secondQuarter, Math.max(thirdQuarter, fourthQuarter))); 

सबसे सुंदर नहीं है, लेकिन यह काम करेंगे।

private double findMax(double... vals) { 
    double max = Double.NEGATIVE_INFINITY; 

    for (double d : vals) { 
     if (d > max) max = d; 
    } 

    return max; 
} 

जो तुम तो कॉल कर सकते हैं द्वारा: सरणी या के साथ हो सकता है सबसे अच्छा विकल्प

double maxStock = findMax(firstQuarter, secondQuarter, thirdQuarter, fourthQuarter); 
+0

मैं माफी माँगता हूँ मैं इस बारे में सोचा जावा फोरम या उन पंक्तियों के साथ कुछ था। –

+0

@ कोडीबेनेट कोई चिंता नहीं। मैंने आपके लिए जावा टैग जोड़ा है।यदि आप एक अलग उत्तर की तलाश में हैं तो इससे अधिक प्रतिक्रियाएं मिल सकती हैं। – nybbler

+0

यह समाधान लिखित के रूप में टूटा हुआ है। Double.MIN_VALUE "टाइप डबल का सबसे छोटा सकारात्मक nonzero मान" देता है, जो 0 के बहुत करीब है, न कि सबसे बड़ा संभव नकारात्मक डबल। इसके बजाय, Double.NEGATIVE_INFINITY या -Double.MAX_VALUE जैसे कुछ का उपयोग किया जा सकता है। – ulmangt

0
Max = firstQuarter; 
If(secondQuarter > max) 
    Max = secondQuarter; 

... और इस तरह

1
double [ ] data = { firstQuarter , secondQuarter , thirdQuarter , fourtQuarter) ; 
Arrays . sort (data) [ 3 ] ; 
2
आदिम वैरिएबल की मदद से

वैकल्पिक रूप से, एक और अधिक मजबूत समाधान के लिए निम्नलिखित समारोह को परिभाषित संग्रह:

Arrays:

double [ ] data = { firstQuarter , secondQuarter , thirdQuarter , fourtQuarter) ; 
Arrays . sort (data) [ 3 ] ; 

संग्रह:

List<Double> data = new Arraylist<Double>(); 
data.add(firstQuarter); 
data.add(secondQuarter); 
data.add(thirdQuarter); 
data.add(foutQuarter); 
Collections.sort(data); 
data.get(3); 

और अगर आप वस्तुओं के साथ काम आप एक तुलनाकारी साथ संग्रह का उपयोग कर सकते हैं:

class Quarter { 
    private double value; 
    private int order; 

    // gets and sets 
} 

और अधिकतम मूल्य प्राप्त करने के:

List<Quarter> list = new ArrayList<Quarter>(); 
Quarter fisrt = new Quarter(); 
first.setValue(firstQuarter); 
first.setOrder(1); 
list.add(first); 
// Do the same with the other values 
Collections.sort(list, new Comparator<Quarter>(){ 
    compare(Object o1, Object o2){ 
     return Double.valueOf(o1.getValue()).compareTo(o2.getValue()); 
    } 
} 

यह अधिक जटिल हो सकता है, लेकिन यदि आप वस्तुओं के साथ काम करते हैं तो मुझे लगता है कि काम करना बेहतर है।

-3
import java.util.Scanner; 


public class dmar { 

public static void main (String [] srgs){ 

    Scanner dmar=new Scanner(System.in);{ 

     { 

System.out.println ("inter number of x plz") ; 

double x=dmar.nextDouble(); 

System.out.println ("inter number of y plz") ;{ 


double y=dmar.nextDouble(); 

System.out.println ("inter number of t plz") ; 
double t=dmar.nextDouble(); 

System.out.println ("inter number of f plz") ; 
double f=dmar.nextDouble(); 

{ 

{ 
if (x>y); 

System.out.println("x biger than y"); 


if (x>t); 
System.out.println("x biger than t"); 

if (x>f); 

System.out.println("x biger than f"); 


if (y>x); 
System.out.println("y biger than x"); 



if (y>t); 
System.out.println("y biger than t"); 

if (y>f); 
System.out.println("y biger than f"); 

if (t>x&t>f&t>y); 
System.out.println("t biger than x"); 

if (t>y); 
System.out.println("t biger than y"); 

if (t>f); 
System.out.println("t biger than f"); 

if (f>x); 
System.out.println("f biger than x"); 


if (f>y); 
System.out.println("f biger than y"); 


     if (f>t); 
System.out.println("f biger than t"); 

} 
4

एक विधि उन्हें पार्टी के लिए देर से सभी

public static <T extends Comparable<T>> T max(T...values) { 
    if (values.length <= 0) 
     throw new IllegalArgumentException(); 

    T m = values[0]; 
    for (int i = 1; i < values.length; ++i) { 
     if (values[i].compareTo(m) > 0) 
      m = values[i]; 
    } 

    return m; 
} 
1

एक छोटी सी शासन करने के लिए है, लेकिन किसी और को इस सवाल को देखने के लिए, जावा 8 आदिम स्ट्रीम प्रकार है कि वास्तव में इस

Collection<Integer> values = new ArrayList<>(); 
OptionalInt max = values.stream().mapToInt((x) -> x).max(); 
लागू है

mapToInt कुंजी फ़ंक्शन है जो इनपुट को एक पूर्णांक प्रकार में परिवर्तित करने का वर्णन करता है। परिणामी धारा में अतिरिक्त एग्रीगेटर्स और कलेक्टर होते हैं जो पूर्णांक प्रकारों के लिए विशिष्ट होते हैं, max() में से एक।

परिणाम मूल्य तो, OptionalInt से निकाला जा सकता है, तो कार्रवाई सफल

1

मैं अब मानना ​​है कि जावा 8 में सबसे संक्षिप्त संस्करण इस प्रकार दिखाई देगा था:

DoubleStream.of(firstQuarter , secondQuarter , thirdQuarter , fourtQuarter).max(); 
संबंधित मुद्दे