2015-12-03 2 views
-1

Я застрял на методе, который найдет самую высокую точку кипения из массива элементов из периодической таблицы. Я получаю ошибку, которую я не могу преобразовать из Element в double. Я попробовал кастинг элементов [0], чтобы удвоить, и это тоже не сработало. Любая помощь приветствуется.Java Поиск наивысшего значения в массиве

public void findHighestBoilingPoint(Element[] elements, int size) 
    { 
     double highest = elements[0]; 

     for (int j = 1; j < elements.length; j++) 
     { 
      if (highest < elements[j]) 
      { 
       highest = elements[j]; 
      } 
     } 
     System.out.println(highest); 

    } 

Это класс элемента Я написал

public class Element 
{ 
    String elementName; 
    int atomicNumber; 
    String symbol; 
    double boilingPoint; 
    double meltingPoint; 
    double density; 
    double molecularWeight; 

    public Element(String elementName, int atomicNumber, String symbol, 
      double boilingPoint, double meltingPoint, double density, 
      double molecularWeight) 
    { 
     this.elementName = elementName; 
     this.atomicNumber = atomicNumber; 
     this.symbol = symbol; 
     this.boilingPoint = boilingPoint; 
     this.meltingPoint = meltingPoint; 
     this.density = density; 
     this.molecularWeight = molecularWeight; 
    } 

    public Element(String[] oneElement) 
    { 
     elementName = oneElement[0]; 
     atomicNumber = Integer.parseInt(oneElement[1]); 
     symbol = oneElement[2]; 
     if(!(oneElement[3].equals(""))) 
     { 
      boilingPoint = Double.parseDouble(oneElement[3]); 
     } 
     if(!(oneElement[4].equals(""))) 
     { 
      meltingPoint = Double.parseDouble(oneElement[4]); 
     } 
     if(!(oneElement[5].equals(""))) 
     { 
      density = Double.parseDouble(oneElement[5]); 
     } 
     molecularWeight = Double.parseDouble(oneElement[6]); 
    } 

    /** 
    * @return the elementName 
    */ 
    public String getElementName() 
    { 
     return elementName; 
    } 

    /** 
    * @return the atomicNumber 
    */ 
    public int getAtomicNumber() 
    { 
     return atomicNumber; 
    } 

    /** 
    * @return the symbol 
    */ 
    public String getSymbol() 
    { 
     return symbol; 
    } 

    /** 
    * @return the boilingPoint 
    */ 
    public double getBoilingPoint() 
    { 
     return boilingPoint; 
    } 

    /** 
    * @return the meltingPoint 
    */ 
    public double getMeltingPoint() 
    { 
     return meltingPoint; 
    } 

    /** 
    * @return the density 
    */ 
    public double getDensity() 
    { 
     return density; 
    } 

    /** 
    * @return the molecularWeight 
    */ 
    public double getMolecularWeight() 
    { 
     return molecularWeight; 
    } 

    @Override 
    public String toString() 
    { 
     String output = "Element Name:\t\t"+ elementName; 
     output = output + "\nAtomic Number: \t\t"+ atomicNumber; 
     output = output + "\nSymbol:\t\t\t + symbol"; 
     if(boilingPoint == 0) 
     { 
      output = output + "\nBoiling Point:\t\t unknown"; 
     } 
     else 
     { 
      output = output + "\nBoiling Point:\t\t" + boilingPoint; 
     } 
     if(meltingPoint == 0) 
     { 
      output = output + "\nMelting Point:\t\t unknown"; 
     } 
     else 
     { 
      output = output + "\nMelting Point:\t\t" + meltingPoint; 
     } 
     if(density == 0) 
     { 
      output = output + "\nDensity:\t\t unknown"; 
     } 
     else 
     { 
      output = output + "\nDensity:\t\t" + density; 
     } 
     if(molecularWeight == 0) 
     { 
      output = output + "\nMolecular Weight:\t\t unknown"; 
     } 
     else 
     { 
      output = output + "\nMolecular Weight:\t\t" + molecularWeight; 
     } 
     return output; 

    } 
+0

Как выглядит класс «Элемент»? Вы должны получить доступ к соответствующему свойству класса для сравнения. –

+0

У вас есть массив элементов. Что заставляет вас думать, что вы можете сказать «double = Element»? Прочитайте эти сообщения об ошибках - они там помогут! – John3136

+0

Является ли ваш метод подписью что-то вроде этого? : 'public void findHighestBoilingPoint (double [] elements, int size)' – tanjir

ответ

-1

elements Вашего массив представляет собой массив, состоящий из значений типа Element, но когда вы объявляете highest вы сделаете это double. Так как highest имеет тип double, то хранение elements[0] (Element) в нем не будет работать. Это похоже на попытку вставить круглую привязку в квадратное отверстие.

Вам нужно будет изучить класс Element и выяснить, как вернуть точку кипения - так как это похоже на школьное задание, может быть какой-то метод там, где вы будете вытаскивать double, как вам нужно (или вы можете написать один).

+0

Да, я понимаю, что я не могу хранить его таким образом. Я просто не уверен, что вытащить из класса Element и как я должен реализовать его в методе, который я написал. –

+0

Глядя на класс Элемента, ответ прямо перед вами. Прочитайте его внимательно и подумайте о том, что именно вы хотите сделать. –

Смежные вопросы