在我的2D数组java代码中找不到错误

在我的2D数组java代码中找不到错误,java,arrays,multidimensional-array,error-handling,syntax-error,Java,Arrays,Multidimensional Array,Error Handling,Syntax Error,Java表示存在预期的“]”错误。我找不到我的代码有什么问题?歌曲课是另一个写作课,没有问题。提前谢谢你的帮助 public class Jukebox { Song[][] songList; songList[0][0] = new Song("Jet Airliner", 5 ); songList[0][1] = new Song( "Slide", 4 ); songList[0][2] = new Song( "Tom Sawyer", 3 );

Java表示存在预期的“]”错误。我找不到我的代码有什么问题?歌曲课是另一个写作课,没有问题。提前谢谢你的帮助

public class Jukebox
{
    Song[][] songList;

    songList[0][0] = new Song("Jet Airliner", 5 );

    songList[0][1] = new Song( "Slide", 4 );

    songList[0][2] = new Song( "Tom Sawyer", 3 );
    songList[0][3] = new Song( "Purple Rain", 2 );
    songList[1][0] = new Song( "Sing a Song", 1 );
    songList[1][1] = new Song( "Baba O'Riley", 5 );
    songList[1][2] = new Song( "Jumper", 4 );
    songList[1][3] = new Song( "Car Wash", 3 );
    songList[2][0] = new Song( "Kung Fu Fighting", 2 );
    songList[2][1] = new Song( "Right as Rain", 4 );
    songList[2][2] = new Song( "Beat It", 5 );
    songList[2][3] = new Song( "Bust a Move", 4 );

    public  String toString()
    {
        String output = " ";
        for (int row = 0; row < songList.length; row++)
        {
            for (int col = 0; col < songList[row].length; col++)
            {
                output+=(songList[row][col]);
            }
            output += "\n";
        }
        return output;
    }

}
公共类自动存储塔
{
歌曲[][]歌曲列表;
歌曲列表[0][0]=新歌(“喷气式客机”,5);
歌曲列表[0][1]=新歌(“幻灯片”,4);
歌曲列表[0][2]=新歌(“汤姆·索耶”,3);
歌曲列表[0][3]=新歌《紫雨》,2首;
歌曲列表[1][0]=新歌(“唱一首歌”,1);
歌曲列表[1][1]=新歌(“Baba O'Riley”,5);
歌曲列表[1][2]=新歌(“跳线”,4);
歌曲列表[1][3]=新歌(“洗车”,3);
歌曲列表[2][0]=新歌《功夫格斗》,2首;
歌曲列表[2][1]=新歌(《如雨一般的权利》,4);
歌曲列表[2][2]=新歌(“击败它”,5);
歌曲列表[2][3]=新歌(Bursta Move),4);
公共字符串toString()
{
字符串输出=”;
for(int row=0;row
有两个问题

  • 在放入元素之前,需要使用数组的大小初始化歌曲列表
  • songList[x][x]的值应该在构造函数或方法中设置

  • 您需要在方法中执行以下所有操作:

    songList[0][0] = new Song("Jet Airliner", 5 );
    
    songList[0][1] = new Song( "Slide", 4 );
    
    songList[0][2] = new Song( "Tom Sawyer", 3 );
    songList[0][3] = new Song( "Purple Rain", 2 );
    songList[1][0] = new Song( "Sing a Song", 1 );
    songList[1][1] = new Song( "Baba O'Riley", 5 );
    songList[1][2] = new Song( "Jumper", 4 );
    songList[1][3] = new Song( "Car Wash", 3 );
    songList[2][0] = new Song( "Kung Fu Fighting", 2 );
    songList[2][1] = new Song( "Right as Rain", 4 );
    songList[2][2] = new Song( "Beat It", 5 );
    songList[2][3] = new Song( "Bust a Move", 4 );
    
    因此,您可以创建一个
    init()
    方法,或者创建一个符合您目的的构造函数

    public void init(){
        songList = new String[3][4];
        songList[0][0] = new Song("Jet Airliner", 5 );
    
        songList[0][1] = new Song( "Slide", 4 );
    
        songList[0][2] = new Song( "Tom Sawyer", 3 );
        songList[0][3] = new Song( "Purple Rain", 2 );
        songList[1][0] = new Song( "Sing a Song", 1 );
        songList[1][1] = new Song( "Baba O'Riley", 5 );
        songList[1][2] = new Song( "Jumper", 4 );
        songList[1][3] = new Song( "Car Wash", 3 );
        songList[2][0] = new Song( "Kung Fu Fighting", 2 );
        songList[2][1] = new Song( "Right as Rain", 4 );
        songList[2][2] = new Song( "Beat It", 5 );
        songList[2][3] = new Song( "Bust a Move", 4 );
    }
    
    现在,在调用
    JukeBox的
    toString()
    方法之前,您需要调用
    init()
    方法。

    试试这个方法

    class Jukebox {
    
        private Song[][] songList;
    
        public Jukebox() {
    
            songList = new Song[3][4];
    
            songList[0][0] = new Song("Jet Airliner", 5);
            songList[0][1] = new Song("Slide", 4);
            songList[0][2] = new Song("Tom Sawyer", 3);
            songList[0][3] = new Song("Purple Rain", 2);
    
            songList[1][0] = new Song("Sing a Song", 1);
            songList[1][1] = new Song("Baba O'Riley", 5);
            songList[1][2] = new Song("Jumper", 4);
            songList[1][3] = new Song("Car Wash", 3);
    
            songList[2][0] = new Song("Kung Fu Fighting", 2);
            songList[2][1] = new Song("Right as Rain", 4);
            songList[2][2] = new Song("Beat It", 5);
            songList[2][3] = new Song("Bust a Move", 4);
        }
    
    
        public String toString() {
            String output = " ";
            for (int row = 0; row < songList.length; row++) {
                for (int col = 0; col < songList[row].length; col++) {
                    output += (songList[row][col]);
                }
                output += "\n";
            }
            return output;
        }    
    }
    
    类自动存储塔{
    私人歌曲[][]歌曲列表;
    公共自动存储塔(){
    歌曲列表=新歌[3][4];
    歌曲列表[0][0]=新歌(“喷气式客机”,5);
    歌曲列表[0][1]=新歌(“幻灯片”,4);
    歌曲列表[0][2]=新歌(“汤姆·索耶”,3);
    歌曲列表[0][3]=新歌《紫雨》,2首;
    歌曲列表[1][0]=新歌(“唱一首歌”,1);
    歌曲列表[1][1]=新歌(“Baba O'Riley”,5);
    歌曲列表[1][2]=新歌(“跳线”,4);
    歌曲列表[1][3]=新歌(“洗车”,3);
    歌曲列表[2][0]=新歌《功夫格斗》,2首;
    歌曲列表[2][1]=新歌(《如雨一般的权利》,4);
    歌曲列表[2][2]=新歌(“击败它”,5);
    歌曲列表[2][3]=新歌(Bursta Move),4);
    }
    公共字符串toString(){
    字符串输出=”;
    for(int row=0;row
    此程序语法错误。
    1. <代码>歌曲[][]歌曲列表必须由新的操作员陪同。
    2.在实例级别,成员只能在一条语句中初始化。所以下面是错误的:

    Song[][] songList;
    songList[0][0] = new Song("Jet Airliner", 5 ); 
    songList[0][1] = new Song( "Slide", 4 ); 
    songList[0][2] = new Song( "Tom Sawyer", 3 ); 
    songList[0][3] = new Song( "Purple Rain", 2 ); 
    songList[1][0] = new Song( "Sing a Song", 1 ); 
    songList[1][1] = new Song( "Baba O'Riley", 5 ); 
    songList[1][2] = new Song( "Jumper", 4 ); 
    songList[1][3] = new Song( "Car Wash", 3 ); 
    songList[2][0] = new Song( "Kung Fu Fighting", 2 ); 
    songList[2][1] = new Song( "Right as Rain", 4 ); 
    songList[2][2] = new Song( "Beat It", 5 ); 
    songList[2][3] = new Song( "Bust a Move", 4 );
    
    解决方案:
    1.使用
    new
    运算符实例化数组。
    Song[][]歌曲列表=新歌[3][4]

  • 使用初始值设定项块或构造函数将对象分配给数组索引。

    类自动存储塔
    {
    歌曲[][]歌曲列表=新歌[3][4];
    {
    //分配的初始化块
    }
    }

  • 除了#2之外,还可以使用数组初始值设定项

    Song[][]歌曲列表=新歌[][]{{}{}{}}


  • 在Java中,如果要为类属性赋值,应该在声明后立即赋值

    而不是这样做:

    Song[][] songList;
    
        songList[0][0] = new Song("Jet Airliner", 5 );
    
        songList[0][1] = new Song( "Slide", 4 );
    
        songList[0][2] = new Song( "Tom Sawyer", 3 );
        songList[0][3] = new Song( "Purple Rain", 2 );
        songList[1][0] = new Song( "Sing a Song", 1 );
        songList[1][1] = new Song( "Baba O'Riley", 5 );
        songList[1][2] = new Song( "Jumper", 4 );
        songList[1][3] = new Song( "Car Wash", 3 );
        songList[2][0] = new Song( "Kung Fu Fighting", 2 );
        songList[2][1] = new Song( "Right as Rain", 4 );
        songList[2][2] = new Song( "Beat It", 5 );
        songList[2][3] = new Song( "Bust a Move", 4 );
    
    试试这个:

    Song[][] songList = {
            {
                new Song("Jet Airliner", 5 ),
                new Song( "Slide", 4 ),
                new Song( "Tom Sawyer", 3 ),
                new Song( "Purple Rain", 2 )
            },
            {
                ...
            }
    
        };
    
    或者,您可以在构造函数中执行赋值

    public Jukebox(){
    songList = {
                {
                    new Song("Jet Airliner", 5 ),
                    new Song( "Slide", 4 ),
                    new Song( "Tom Sawyer", 3 ),
                    new Song( "Purple Rain", 2 )
                },
                {
                    ...
                }
    
            };
    }
    
    Song[][] songList = {
            {
                new Song("Jet Airliner", 5 ),
                new Song( "Slide", 4 ),
                new Song( "Tom Sawyer", 3 ),
                new Song( "Purple Rain", 2 )
            },
            {
                ...
            }
    
        };
    
    public Jukebox(){
    songList = {
                {
                    new Song("Jet Airliner", 5 ),
                    new Song( "Slide", 4 ),
                    new Song( "Tom Sawyer", 3 ),
                    new Song( "Purple Rain", 2 )
                },
                {
                    ...
                }
    
            };
    }