【问题标题】:how to make a 2d array that is dynamic如何制作一个动态的二维数组
【发布时间】:2019-02-19 18:25:33
【问题描述】:

我正在尝试制作一个半动态的二维数组。所以它不使用arrayLists,也不是完全动态的,用户可以添加或删除元素,但程序必须能够询问用户团队的数量,然后询问每个团队的名称和每个团队的玩家人数,以及最后是每支球队中每个球员的名字。以下是我到目前为止所做的。代码运行但不会输出球队和球员。请尽快提供帮助:)


import java.util.Scanner;
public class semi_dynamic 
{
    public static void main(String[] args) 
    {
        //Variable Declarations and Initializations
        String sNumPlayers="";
        int numPlayers=0, numTeams=0;
        //String sTeams[]=new String[3];
        String sPlayers[][] =new String[3][];//want an array of arrays but do not know how many teams players there are per team
        Scanner scanner= new Scanner(System.in);
        System.out.println("How many teams are there:");
        numTeams=scanner.nextInt();
        String sTeams[]=new String [numTeams];
        for(int i=0;i<sTeams.length;i++)
        {
            System.out.println("\nPlease enter in team name #"+(i+1)+":");
            sTeams[i]=scanner.next();
        }//end for loop
        for(int i=0;i<sPlayers.length;i++)
        {
            System.out.println("\nHow many players are there in team "+sTeams[i]+":");
            sNumPlayers=scanner.next();
            numPlayers=Integer.parseInt(sNumPlayers);
            sPlayers[i]=new String[numPlayers];
            for(int j=0;j<sPlayers[i].length;j++)
            {
                System.out.println("\nPlease enter in team player #"+(j+1)+" for team "+sTeams[i]+":");
                sPlayers[i][j]=scanner.next();
            }//end for loop
        }//end for loop
        System.out.println("\n=====================================\nTEAMS                       PLAYERS\n");
        for(int i=0;i<sPlayers.length;i++)
        {
            System.out.print(sTeams[i]+"\t ");
            for (int j=0;j<sPlayers.length;j++)
            {
                System.out.print(" "+sPlayers[i][j]+"\t ");
            }//end for loop
            System.out.println("\n----------------------------------------------------------------------------------------------------\n");
        }//end for loop
    }//end main
}//end class

【问题讨论】:

  • sPlayers = new String[numTeams][]; 一旦你知道有多少个团队;然后sPlayers[i] = new String[sNumPlayers];(正如你已经在做的那样)当你有球队#i的球员人数时。

标签: java arrays dynamic


【解决方案1】:

第一个错误:

String sPlayers[][] =new String[**3**][];

您总是尝试输入 3 支球队的球员姓名。将其更改为:

    numTeams=scanner.nextInt();//also make sure to handle InputMismatchException for non integer inputs
    String sTeams[]=new String [numTeams];
    String sPlayers[][] =new String[numTeams][];//now it works for user entered number of teams

在打印每支球队的球员姓名时:

 for(int i=0;i<sPlayers.length;i++)
    {
        System.out.print(sTeams[i]+"\t ");
        for (int j=0;j< **sPlayers.length** ;j++)//j<numTeams, it should be j<num of players for each team
        {
            System.out.print(" "+sPlayers[i][j]+"\t ");
        }//end for loop
        System.out.println("\n----------------------------------------------------------------------------------------------------\n");
    }//end for loop

将内循环的条件改为sPlayer[i].length

    for(int i=0;i<sPlayers.length;i++)
    {
        System.out.print(sTeams[i]+"\t ");
        for (int j=0;j<sPlayers[i].length;j++)//now j<num of players of ith team
        {
            System.out.print(" "+sPlayers[i][j]+"\t ");
        }//end for loop
        System.out.println("\n----------------------------------------------------------------------------------------------------\n");
    }//end for loop

【讨论】:

    猜你喜欢
    • 2018-05-17
    • 2019-01-11
    • 1970-01-01
    • 2012-04-11
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2013-05-14
    • 1970-01-01
    相关资源
    最近更新 更多