2013-03-11 4 views
-3

Я пишу программу, которая позволяет пользователю вводить спортивные команды, а затем записывать выигрыши и потери на основе команды, в которую они входят. Я довольно уверен, что у меня настроены массивы неправильно, потому что он не увеличивает выигрыши и потери правильно, кто-нибудь видит проблему?Приращение значений массива java

import java.util.Scanner; 

public class sports { 


public static void main(String[] args) { 


    System.out.println("Howdy sports fan!"); 

    String menuSelect; 
    String winSelect; 
    String loseSelect; 
    int teamSize = 0; 

    String[] teamsArray = new String[0]; 
    int[] winsArray = new int[0]; 
    int[] lossesArray = new int[0]; 


    do { 

     System.out.println("Please pick an option from the list below:"); 
     System.out.println("1) Create League"); 
     System.out.println("2) List all teams"); 
     System.out.println("3) Record a win");   
     System.out.println("4) Record a loss");   
     System.out.println("5) Quit");   
     Scanner keyboard = new Scanner(System.in); 
     menuSelect = keyboard.nextLine(); 

     if (menuSelect.equals("1")) 
     { 

      System.out.println("How many teams should I make?"); 
      try 
      { 
      teamSize = Integer.parseInt(keyboard.nextLine()); 
      } 
      catch (NumberFormatException e) 
      { 
       System.out.println("Invalid entry, try again."); 
      } 

      teamsArray = new String[teamSize]; 

      for (int i = 0; i < teamsArray.length; ++i) 
      { 
       System.out.println("Team " + (i+1) + "'s name?"); 
       teamsArray[i] = keyboard.nextLine();     
      } 
     } 

     else if (menuSelect.equals("2")) 
     { 

      if (teamsArray.length == 0) 
      { 
       System.out.println("There are no teams!"); 
      } 
      else 


      System.out.printf("%21s %21s %n", "W", "L"); 

      for (int i = 0; i < teamsArray.length; ++i) 
      { 
       System.out.printf(teamsArray[i] + "%20d %21d %n", winsArray[i], lossesArray[i]); 

      } 
     } 

     else if (menuSelect.equals("3")) 
     { 
      winsArray = new int[teamSize]; 
      System.out.println("Which team won a game?"); 
      winSelect = keyboard.nextLine(); 

      for (int i = 0; i < teamsArray.length; ++i) 
      { 
       if (winSelect.equals(teamsArray[i])) 
       { 
        ++winsArray[i]; 
       } 
      } 
     } 

     else if (menuSelect.equals("4")) 
     { 
      lossesArray = new int[teamSize]; 
      System.out.println("Which team lost a game?"); 
      loseSelect = keyboard.nextLine(); 

      for (int i = 0; i < teamsArray.length; ++i) 
      { 
       if (loseSelect.equals(teamsArray[i])) 
       { 
        ++lossesArray[i]; 
       } 
      } 
     } 
     else 
     { 
      System.out.println("Invalid Selection"); 
     } 


    } while(!menuSelect.equals("5")); 

} 

} 
+2

что такое ввод, что ожидается результат, что такое фактический результат? вы использовали отладчик? –

ответ

1

Вы должны инициализировать все массивы в Option # 1, в то время вместо инициализации в варианте # 3/4, как это.

import java.util.Scanner; 

public class sports { 


public static void main(String[] args) { 


    System.out.println("Howdy sports fan!"); 

    String menuSelect; 
    String winSelect; 
    String loseSelect; 
    int teamSize = 0; 

    String[] teamsArray = new String[0]; 
    int[] winsArray = new int[0]; 
    int[] lossesArray = new int[0]; 


    do { 

     System.out.println("Please pick an option from the list below:"); 
     System.out.println("1) Create League"); 
     System.out.println("2) List all teams"); 
     System.out.println("3) Record a win");   
     System.out.println("4) Record a loss");   
     System.out.println("5) Quit");   
     Scanner keyboard = new Scanner(System.in); 
     menuSelect = keyboard.nextLine(); 

     if (menuSelect.equals("1")) 
     { 

      System.out.println("How many teams should I make?"); 
      try 
      { 
      teamSize = Integer.parseInt(keyboard.nextLine()); 
      } 
      catch (NumberFormatException e) 
      { 
       System.out.println("Invalid entry, try again."); 
      } 

      teamsArray = new String[teamSize]; 
      winsArray = new int[teamSize]; 
      lossesArray = new int[teamSize]; 

      for (int i = 0; i < teamsArray.length; ++i) 
      { 
       System.out.println("Team " + (i+1) + "'s name?"); 
       teamsArray[i] = keyboard.nextLine();     
      } 
     } 

     else if (menuSelect.equals("2")) 
     { 

      if (teamsArray.length == 0) 
      { 
       System.out.println("There are no teams!"); 
      } 
      else 


      System.out.printf("%21s %21s %n", "W", "L"); 

      for (int i = 0; i < teamsArray.length; ++i) 
      { 
       System.out.printf(teamsArray[i] + "%20d %21d %n", winsArray[i], lossesArray[i]); 

      } 
     } 

     else if (menuSelect.equals("3")) 
     { 
      System.out.println("Which team won a game?"); 
      winSelect = keyboard.nextLine(); 

      for (int i = 0; i < teamsArray.length; ++i) 
      { 
       if (winSelect.equals(teamsArray[i])) 
       { 
        ++winsArray[i]; 
       } 
      } 
     } 

     else if (menuSelect.equals("4")) 
     { 
      System.out.println("Which team lost a game?"); 
      loseSelect = keyboard.nextLine(); 

      for (int i = 0; i < teamsArray.length; ++i) 
      { 
       if (loseSelect.equals(teamsArray[i])) 
       { 
        ++lossesArray[i]; 
       } 
      } 
     } 
     else 
     { 
      System.out.println("Invalid Selection"); 
     } 


    } while(!menuSelect.equals("5")); 

} 

} 
+0

Не помогите человеку, написав полный код. Скажите ему его ошибки и позвольте исправить его. Если вы дадите весь такой код, человек не узнает, какими будут его ошибки. –

0

Проблема заключается в том, что вы выделение winsArray и lossesArray всякий раз, когда вы читаете выигрыш или проигрыш. Следующие два утверждение должно быть в варианте 1:

winsArray = new int[teamSize]; 
lossesArray = new int[teamSize]; 
0

Если вы intializing массива, как это, компилятор thinkes, что эти три переменных teamsArray, winsArray и lossesArray является arraytype с нулевого размером. Это означает, что вы можете добавить любые значения в массив, и это приведет к ошибке при попытке получить доступ, например, teamArray [i].

String[] teamsArray = new String[0]; 
int[] winsArray = new int[0]; 
int[] lossesArray = new int[0]; 

Так что попробуйте инициализировать массив, когда пользователь переходит на один вариант, чтобы создать лигу, как сказал ravidra.

teamsArray = new String[teamSize]; 
winsArray = new int[teamSize]; 
lossesArray = new int[teamSize]; 

Постарайтесь узнать, что пошло не так и как исправить.

+0

Я здесь, чтобы узнать, некоторые вещи могут сбивать с толку, но я вижу, что пошло не так в этой ситуации. Спасибо вам за помощь – user2150807

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