2013-08-31 3 views
0

Для моего задания я должен сделать программу, которая поможет решить, что игроки бейсбола будут рисовать. Программа предлагает скауту ввести информацию об игроке и сохранить его в массиве. Затем он будет проверять массив и отображать список игроков в возрасте до 25 лет. И средний размер монеты составляет 0,280 или более. Список должен быть отсортирован по возрасту.Сортировка и отображение конкретных значений из сохраненного массива

О, и требуется меню.

Моя проблема в том, что это не дает мне никаких результатов, кроме названия! Разве это не сортировка? Не работает ли оператор if? ЧТО НЕ ТАК!?

В игроки класса выглядит следующим образом:

public class players 
{ 
    String name; 
    String position; 
    int age; 
    double average; 
} 

Вот мой код:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 

public class BlueJays 
{  
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    static players[] arr; 

public static void main(String[] args) throws IOException 
{ 
    String quit = "n"; 
    while("n".equals(quit)) 
    { 
     //display menu 
     System.out.println("Toronto Blue Jays Drafting Program - Main Menu"); 
     System.out.println("1) Input Blue Jays data"); 
     System.out.println("2) Display possible draft choices");  
     System.out.println("3) Quit program"); 
     System.out.print("Please choose an option by inputting the number of your choice: "); 
     String choiceString = br.readLine(); 
     int choice = Integer.parseInt(choiceString); 

     if(choice == 1) 
     { 
      inputInfo(); 
     }else if(choice == 2) 
     { 
      sortInfo(); 
     }else if(choice == 3) 
     { 
      System.out.println("Are you sure you want to quit? (y/n) "); 
      quit = br.readLine(); 
     }else 
     { 
      System.out.println("Not a valid option."); 
     }     
    } 
} 

//method to input names of Blue Jays 
public static void inputInfo() throws IOException 
{ 
    players temp = new players(); 
    System.out.print("How many players would you like to enter? "); 
    int x = Integer.valueOf(br.readLine()).intValue(); 
    arr = new players[x];  

    //loop through players 
    for(int i = 0; i < arr.length; i++) 
    { 

     System.out.println("Enter player information."); 

     System.out.println("Input first and last name: "); 
     String name = br.readLine(); 
     temp.name = name;  

     System.out.println("Input position: "); 
     String position = br.readLine(); 
     temp.position = position; 

     System.out.println("Input batting average (e.g. .246): "); 
     String averageString = br.readLine(); 
     temp.average = Double.parseDouble(averageString); 

     System.out.println("Input age: "); 
     temp.age = Integer.parseInt(br.readLine()); 
     System.out.println(" "); 

     // Copy the software name and quantity to the global variables 
     arr[i] = temp; 
    } 
} 

//method to sort and display info 
public static void sortInfo() 
{    
    //sort by quantity 
    for(int i = 0; i < arr.length; i++) 
    { 
     for(int j = i+1; j < arr.length; j++) 
     { 
      if(arr[i].age > arr[j].age) 
      { 
       players temp = arr[j]; 
       arr[j] = arr[i]; 
       arr[i] = temp; 
      } 
     } 

    }    
    System.out.println("Draft Choices 2013");   
    //output 
    for(int i = 0; i < arr.length; i++) 
    { 
     if (arr[i].age <= 25 && arr[i].average >= 0.280) 
     { 
      System.out.println("Name: " + arr[i].name);  
      System.out.println("Age: " + arr[i].age); 
      System.out.println("Position: " + arr[i].position); 
      System.out.println("Batting average: " + arr[i].average); 
      System.out.println(" ");   
     }    

    } 
    } 
} 

Мне нужно передать это очень скоро, так что любая помощь будет принята с благодарностью! Заранее спасибо!

+0

Что вы имеете в виду под "только названием"? Лишь программа «Торонто Блю Джейс» - главное меню? Это было бы довольно странно. – SJuan76

+0

@ SJuan76 Нет, я имел в виду линию «Выбор проекта 2013». – Sal

ответ

3

WTF из кода, который может быть причиной вам вопросы:

players temp = new players(); 
System.out.print("How many players would you like to enter? "); 
int x = Integer.valueOf(br.readLine()).intValue(); 
arr = new players[x];  

//loop through players 
for(int i = 0; i < arr.length; i++) 
{ 

    System.out.println("Enter player information."); 

    System.out.println("Input first and last name: "); 
    String name = br.readLine(); 
    temp.name = name;  
    .... 

}

создается только players экземпляр и использовать его. Итак, у вас нет массива (скажем) 20 разных players, но массив, который указывает 20 раз на тот же объект (экземпляр). Данные экземпляра будут постоянно перезаписываться и содержать только данные последнего игрока, который вы ввели, и если он имеет age > 25, никакие записи не будут распечатаны из-за вашего фильтра.

Перемещение создание экземпляра внутри for

System.out.print("How many players would you like to enter? "); 
int x = Integer.valueOf(br.readLine()).intValue(); 
arr = new players[x];  

//loop through players 
for(int i = 0; i < arr.length; i++) 
{ 
    players temp = new players(); // <---- THIS 

    System.out.println("Enter player information."); 

    System.out.println("Input first and last name: "); 
    String name = br.readLine(); 
    temp.name = name;  
    .... 

}

+0

Работал как шарм! Спасибо за вашу помощь! – Sal

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