Java中switch-case的语法

Java中switch-case的语法,java,syntax,switch-statement,Java,Syntax,Switch Statement,我第一次在Java中使用switch-case,我对语法有点不确定。假设setTeamName函数可以工作,那么下面的函数会使数组中的所有团队都使用占位符字符串作为其名称,还是应该从案例0开始:因为我从0开始 public static Team[] makeTeams(){ Team[] teams = new Team[10]; for(int i = 0; i < teams.length; i++){ switch(i){ c

我第一次在Java中使用switch-case,我对语法有点不确定。假设setTeamName函数可以工作,那么下面的函数会使数组中的所有团队都使用占位符字符串作为其名称,还是应该从案例0开始:因为我从0开始

public static Team[] makeTeams(){
    Team[] teams = new Team[10];
    for(int i = 0; i < teams.length; i++){
        switch(i){
            case 1: teams[0].setTeamName("Arsenal");
            case 2: teams[1].setTeamName("Arsenal");
            case 3: teams[2].setTeamName("Arsenal");
            case 4: teams[3].setTeamName("Arsenal");
            case 5: teams[4].setTeamName("Arsenal");
            case 6: teams[5].setTeamName("Arsenal");
            case 7: teams[6].setTeamName("Arsenal");
            case 8: teams[7].setTeamName("Arsenal");
            case 9: teams[8].setTeamName("Arsenal");
            case 10: teams[9].setTeamName("Arsenal");
        }
    }
    return teams;
}
publicstaticteam[]makeTeams(){
团队[]团队=新团队[10];
for(int i=0;i
您正在做很多不必要的工作。试一试

public static Team[] makeTeams(){
    Team[] teams = new Team[10];
        for(int i = 0; i < teams.length; i++){
            teams[i] = new Team();
            teams[i].setTeamName("Arsenal");
        }
    return teams;
}
publicstaticteam[]makeTeams(){
团队[]团队=新团队[10];
for(int i=0;i
您可以选择填充数组,但是如果您的任务要求您只使用
开关,那么请从
案例0开始,而不是从1开始,因为0是您遇到的“第一个”
案例。

在案例中的每个指令之后使用break语句。您真的需要在这里切换吗<代码>for
循环就足够了

切换只需将执行移到案例行,并在下次忽略另一个案例。所以当你给i=1来切换时,所有的case语句都会被执行。您可以使用
break来防止它

switch (i) {
    case 1: 
        teams[0].setTeamName("Arsenal");
        break;
    case 2: 
        teams[1].setTeamName("Arsenal");
        break;
}

您的
case
语句需要从
0
开始,因为正如您正确观察到的,
i
从零开始。但是,这似乎是您遇到的最小问题(除非这只是使用
开关箱的练习)

在这种情况下,您根本不需要开关盒。另外,您从未在数组中创建任何对象,因此每次尝试在特定索引处访问数组时,都会出现空引用异常。以下几点就足够了:

Team[] teams = new Team[10];
for (int i = 0; i < teams.length; i++) {
    teams[i] = new Team();
    teams[i].setTeamName("Arsenal");
}

在没有中断的情况下,将计算与
i
匹配的case语句下的每个case语句,例如,当
i==0
时,将执行所有case语句。

代码中几乎没有错误:

1) 您没有案例0-因此不使用它。建议总是使用默认情况

2) 每一个案例都应该以中断结束;否则,也将执行以下所有情况。例如,对于案例9,这些案例称为9和10。对于案例1,所有10个案例都已调用。(但对于代码中的情况0,不调用任何函数)


3) 您保留了10个团队的阵列,但未将对象填充到此阵列。您的代码将产生空指针异常。

为什么需要在这里切换?为什么不干脆
teams[i].setTeamName
天哪!这是一种非常复杂的编写
for(Team-Team:teams){Team.setTeamName(“阿森纳”);}
有关switch的语法,请阅读Java教程:。其他事情都要这样做。还要确保你首先初始化了所有的数组条目。当我想到这一点时,这会更有意义,谢谢!有更好的方法可以做到这一点。但是由于您要求,数组将仅在此处从0填充到8。您应该从0开始。另外,对于每种情况,您应该有一个
中断声明我想我应该补充一点,不是每支球队都会被称为阿森纳,我只是懒得去改变它
Team[] teams = new Team[10];
for (int i = 0; i < teams.length; i++) {
    teams[i] = new Team();
    switch (i) {
        case 0: teams[0].setTeamName("Arsenal"); break;
        case 1: teams[1].setTeamName("Arsenal"); break;
        case 2: teams[2].setTeamName("Arsenal"); break;
        case 3: teams[3].setTeamName("Arsenal"); break;
        case 4: teams[4].setTeamName("Arsenal"); break;
        case 5: teams[5].setTeamName("Arsenal"); break;
        case 6: teams[6].setTeamName("Arsenal"); break;
        case 7: teams[7].setTeamName("Arsenal"); break;
        case 8: teams[8].setTeamName("Arsenal"); break;
        case 9: teams[9].setTeamName("Arsenal"); break;
    }
}