2015-03-03 2 views
0

В классе AP Computer Science мы работаем над лабораторией, в которой мы создаем массив объектов Monster с параметрами Height, Weight и Age. Нам нужно распечатать массив, распечатать самый большой и самый маленький, а затем отсортировать массив. Я борюсь с сравнением высоты двух объектов. вместо того, чтобы возвращать объект, он возвращает null. Вот мой основной файл класса.Сравнение объектов в Java

package lab64; 
import static java.lang.Integer.parseInt; 
import java.util.Arrays; 
import javax.swing.JOptionPane; 

public class Monsterz 
{ 
    static String MONSTER; 
    static Monster MONSTERS[]; 
    static int HT; 
    static int WT; 
    static int AGE; 

    /* public Monsterz(int ht, int wt, int age) 
    { 
    } */ 

    public static void main(String[] args) 
    { 
     MONSTER = JOptionPane.showInputDialog("Input number of monsters in the herd ::"); 
     int len = parseInt(MONSTER); 
     MONSTERS = new Monster[len]; 
     for (int i = 0; i <= MONSTERS.length - 1; i++) 
     { 
      String Height = JOptionPane.showInputDialog("Input Ht ::"); 
      String Weight = JOptionPane.showInputDialog("Input Wt ::"); 
      String Age = JOptionPane.showInputDialog("Input Age ::"); 
      HT = parseInt(Height); 
      WT = parseInt(Weight); 
      AGE = parseInt(Age); 
      MONSTERS[i] = new Monster(HT,WT,AGE); 
     } 
     JOptionPane.showMessageDialog(
       null, 
       "HERD :: " + Arrays.toString(MONSTERS) + "\nLARGEST :: " + getLargest(), 
       "Monster Lab", 
       JOptionPane.PLAIN_MESSAGE); 

    } 
    public static Monster getLargest() 
    { 
     Monster largest = null; 
     for(int c = 0; c > MONSTERS.length; c++) 
     { 
      if (MONSTERS[c].getHeight() > MONSTERS[c+1].getHeight()) 
      { 
       largest = MONSTERS[c]; 
      } 
     } 
     return largest; 
    } 


} 

и вот файл класса монстр

package lab64; 
class Monster { 

    int ht = 0; 
    int wt = 0; 
    int age = 0; 
    Monster(int HT, int WT, int AGE) 
    { 
     ht = HT; 
     wt = WT; 
     age = AGE; 

    } 
    public int getHeight() 
    { 
     return ht; 
    } 
    public int getWeight() 
    { 
     return wt; 
    } 
    public String toString() 
    { 
     return ht + " " + wt + " " + age; 
    } 

} 

Как я могу это исправить, чтобы заставить его работать?

+1

Старайтесь избегать использования заглавных имен переменных величин. Большинство людей используют прописные буквы для констант. – thekiwi5000

ответ

2

Исправьте свое состояние.

Изменить for(int c = 0; c > MONSTERS.length; c++)

в

for(int c = 0; c < MONSTERS.length; c++)

также исправить логику для нахождения наибольшего элемента в массиве:

Monster largest = MONSTERS[0]; 
    for(int c = 0; c < MONSTERS.length; c++) 
    { 
     if (largest.getHeight() > MONSTERS[c].getHeight()) 
     { 
      largest = MONSTERS[c]; 
     } 
    } 
Смежные вопросы