Java数组/ 2维数组用户输入和显示

时间:2015-11-10 17:51:20

标签: java arrays

我尝试编写一种方法,允许用户输入运动队的球员数量,比赛次数,球员姓名以及每场比赛每场比赛的得分数量

基本上,我想要以下显示输出,其中所有信息都由用户提供:

Player  Game 1  Game 2  Game 3  Game 4
Tom
Dick
Harry
Matthew
John

......然后是每场比赛中每位球员得分。

我承认这个小项目源于家庭作业,但我已经完成了作业并且作业甚至没有要求用户提供的输入。我真的只是想知道如何做到这一点。

以下是我的代码。一些问题。

  1. 我将每个玩家的名字分配给一个名为playerRoster的数组。不要在arrayName[0]初始化所有数组?但是当我打印出playerRoster[0]时,什么都没有显示出来。当我打印出playerRoster[1]时,会显示我为数组输入的第一个名称(应该在playerRoster[0]编制索引)。为什么呢?

  2. 与上述相关:我被提示输入名单上的玩家数量,并说我输入数字5.但是提示允许我只输入4个名字。为什么呢?

  3. 上面的显示是我正在寻找的,我确信有内置的Java方法来显示值表。我其实并不想要那个。我有点想要循环,就像我现在这样做。 (我知道,我知道 - 乞丐不能选择)

  4. 这是我的代码

    import java.util.*;
    
    public class BasketballScores
    {
      public static void main (String[] args)
      {
        Scanner input = new Scanner(System.in);    
        System.out.println ("Enter the number of players on roster: ");
        int numPlayers = input.nextInt();
        System.out.println();
        System.out.println ("Enter the number of games played: ");
        int numGames = input.nextInt();
        System.out.println();
        int[][] arrayScores = new int[numPlayers][numGames];
        String[] playerRoster = new String[numPlayers];
        System.out.println ("Enter player names: ");
        for (int j = 0; j < numPlayers; j++)
        {
            playerRoster[j] = input.nextLine();
        }
        for (String element: playerRoster)
        {
            System.out.println (element);
        }
        System.out.println();
        System.out.println ("Enter the points scored per player per game: ");
        System.out.println();
    
        System.out.print (playerRoster[1]);
        for (int i = 0; i < numPlayers; i++)
        {
            for (int k = 0; k < numGames; k++)
            {
                arrayScores[i][k] = input.nextInt();
            }
        }
        System.out.println();
    
        for (int i = 0; i < numPlayers; i++)
        {
            System.out.println();
            for (int k = 0; k < numGames; k++)
            {
                System.out.print (arrayScores[i][k] + ", ");
            }
        }
      }
    }
    

1 个答案:

答案 0 :(得分:2)

首先,在获得播放器名称之前,您仍然可以使用numGames。在尝试解析您的名字之前,您需要致电input.nextLine()。这应该解决你的前两个问题。 #nextLine会发生什么情况,您将到达当前行所在行的末尾。获得numGames后,您仍然在那条线上。拨打input.nextLine()以使用您的播放器名称前进。

System.out.println ("Enter the number of players on roster: ");
int numPlayers = input.nextInt();
System.out.println();
System.out.println ("Enter the number of games played: ");
int numGames = input.nextInt();
input.nextLine(); //You need this to go to the next line before attempting to get your player names. 
System.out.println();
int[][] arrayScores = new int[numPlayers][numGames];
String[] playerRoster = new String[numPlayers];
System.out.println ("Enter player names: ");
for (int j = 0; j < numPlayers; j++)
{
    playerRoster[j] = input.nextLine();
}

要格式化您的打印​​件,您可以使用System.out.printf。以下是您应该能够利用的快速示例。 Quick reference guide

String[] players = new String[]{"Tom", "Dick", "Harry", "Matthew", "Johh"};
System.out.printf("%-10s%6s%6s%6s%6s","Player", "Game1 ", "Game2 ", "Game3 ", "Game4 ");
System.out.println();
Random r = new Random();
for (String player : players){
    System.out.printf("%-10s%3d%6d%6d%6d",player, r.nextInt(10), r.nextInt(10), r.nextInt(10), r.nextInt(10));
    System.out.println();
}

输出:

Player    Game1 Game2 Game3 Game4 
Tom         2     9     7     3
Dick        8     1     8     4
Harry       9     2     0     2
Matthew     5     1     3     2
Johh        8     4     0     2

一旦分享了您尝试输入数据的方式,我可以提供更多帮助。希望这可以帮助!