我尝试编写一种方法,允许用户输入运动队的球员数量,比赛次数,球员姓名以及每场比赛每场比赛的得分数量
基本上,我想要以下显示输出,其中所有信息都由用户提供:
Player Game 1 Game 2 Game 3 Game 4
Tom
Dick
Harry
Matthew
John
......然后是每场比赛中每位球员得分。
我承认这个小项目源于家庭作业,但我已经完成了作业并且作业甚至没有要求用户提供的输入。我真的只是想知道如何做到这一点。
以下是我的代码。一些问题。
我将每个玩家的名字分配给一个名为playerRoster
的数组。不要在arrayName[0]
初始化所有数组?但是当我打印出playerRoster[0]
时,什么都没有显示出来。当我打印出playerRoster[1]
时,会显示我为数组输入的第一个名称(应该在playerRoster[0]
编制索引)。为什么呢?
与上述相关:我被提示输入名单上的玩家数量,并说我输入数字5.但是提示允许我只输入4个名字。为什么呢?
上面的显示是我正在寻找的,我确信有内置的Java方法来显示值表。我其实并不想要那个。我有点想要循环,就像我现在这样做。 (我知道,我知道 - 乞丐不能选择)
这是我的代码
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] + ", ");
}
}
}
}
答案 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
一旦分享了您尝试输入数据的方式,我可以提供更多帮助。希望这可以帮助!