Java 我是否正确使用了这些开关语句?我总是得到相同的几个名字

Java 我是否正确使用了这些开关语句?我总是得到相同的几个名字,java,Java,我一直在使用的名称生成器遇到了问题。我很好奇我的问题是否在Switch语句中。我知道我展示了很多代码,但我不确定问题到底在哪里。我不确定我是否只需要添加“断开”行,或者我是否需要一个新的整数值来创建一个不同的随机数来确定一个不同的数。注意:我知道括号中的格式不一定正确,但请确保括号在实际代码中 public String hm(char sex){ if (sex == 'm') { r = i.nextInt(7); if (r

我一直在使用的名称生成器遇到了问题。我很好奇我的问题是否在Switch语句中。我知道我展示了很多代码,但我不确定问题到底在哪里。我不确定我是否只需要添加“断开”行,或者我是否需要一个新的整数值来创建一个不同的随机数来确定一个不同的数。注意:我知道括号中的格式不一定正确,但请确保括号在实际代码中

public String hm(char sex){
    if (sex == 'm') {
            r = i.nextInt(7);
                if (r == 0) {
                    n = i.nextInt(6);
                    switch (n) {
                        case 0:
                            f = "Aseir";
                        case 1:
                            f = "Bardeid";
                        case 2:
                            f = "Haseid";
                        case 3:
                            f = "Khemed";
                        case 4:
                            f = "Mehmen";
                        case 5:
                            f = "Sudeimen";
                        case 6:
                            f = "Zasheir";
                    }
                    n = i.nextInt(6);
                    switch (n) {
                        case 0:
                            l = "Basha";
                        case 1:
                            l = "Dumein";
                        case 2:
                            l = "Jassan";
                        case 3:
                            l = "Khalid";
                        case 4:
                            l = "Mostana";
                        case 5:
                            l = "Pashar";
                        case 6:
                            l = "Rein";
                    }
                }

你错过了休息声明。应该是这样的-

 switch (n) {
                    case 0:
                        f = "Aseir";break;
                    case 1:
                        f = "Bardeid";break;
                    case 2:
                        f = "Haseid";break;
                    case 3:
                        f = "Khemed";break;
                    case 4:
                        f = "Mehmen";break;
                    case 5:
                        f = "Sudeimen";break;
                    case 6:
                        f = "Zasheir";

您根本不需要使用
switch
语句

您可以提供简单的数组/数组列表并从中获取值:

static final String[] F_NAMES = {
    "Aseir", "Bardeid", "Haseid", "Khemed", "Mehmen", "Sudeimen", "Zasheir"
};

//...
n = i.nextInt(F_NAMES.length);
f = F_NAMES[n];

对于
l

的其他名称,也应采用类似的方法。是的,您需要在每个开关案例中添加
break
语句。否则,执行将“失败”,并且只保留最后分配的值


除此之外,
i.nextInt(6)
最多返回5个数字,因此不会触发最后一个case选项。您需要
i.nextInt(7)
生成0-6的完整范围内的数字。

您缺少
break查看nextInt的JavaDoc:。nextInt(n)返回间隔[0,n-1]内的随机整数。因此,对于nextInt(6),数字6永远不会返回。您将需要nextInt(7),这样您将在间隔[0,6]内接收一个随机整数。