Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我正在编写一个程序,为twitch流媒体应用程序的eq生成随机比赛/等级_Java_String_If Statement_Random - Fatal编程技术网

Java 我正在编写一个程序,为twitch流媒体应用程序的eq生成随机比赛/等级

Java 我正在编写一个程序,为twitch流媒体应用程序的eq生成随机比赛/等级,java,string,if-statement,random,Java,String,If Statement,Random,好的,所以我想做的是得到一个程序,可以从旧游戏everquest中创建一个随机的职业/种族组合。我想确保课程考虑到了班级比赛的限制。所以我做了一堆字符串,我似乎无法得到一个基于随机比赛的随机类 所以它应该是这样工作的 程序选择一个种族,并随机选择一个只有该种族才能玩的类。因此,所有的字符串。请任何帮助将不胜感激,这样我就可以进入这个项目的第二阶段 还有一个旁注:如何使按钮保持在顶部,并在其下方显示弹出的文本?如果我理解正确,您可以使用2d数组。例如 import javax.swing.*; i

好的,所以我想做的是得到一个程序,可以从旧游戏everquest中创建一个随机的职业/种族组合。我想确保课程考虑到了班级比赛的限制。所以我做了一堆字符串,我似乎无法得到一个基于随机比赛的随机类

所以它应该是这样工作的 程序选择一个种族,并随机选择一个只有该种族才能玩的类。因此,所有的字符串。请任何帮助将不胜感激,这样我就可以进入这个项目的第二阶段


还有一个旁注:如何使按钮保持在顶部,并在其下方显示弹出的文本?

如果我理解正确,您可以使用2d数组。例如

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class ClassNameGenerator {

    private static JLabel label;
    private static JLabel label2;

    public static void main (String[] args){

        JFrame frame = new JFrame("EQStreamTool");
        frame.setVisible(true);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(400,350);
        JPanel panel = new JPanel (new FlowLayout(FlowLayout.CENTER, 20, 5));
        for (int i =0; i <10; i++) {
        }
        frame.add(panel);
        JButton button = new JButton("Generate Class/Race");
        panel.add(button);
        label = new JLabel();
        panel.add(label);
        button.addActionListener(new Action());
        label2 = new JLabel();
        panel.add(label2);
        button.addActionListener(new Action());
    }

    static class Action implements ActionListener{

        public void actionPerformed (ActionEvent e){
            String[] races = {"Barbarian", "Dark Elf", "Dwarf", "Erudite", "Gnome", "Ogre", "Troll", "Wood Elf", "Half Elf", "Halfling", "High Elf", "Human", "Iksar"};
            String[] classes = {"Bard", "Druid", "Cleric", "Enchanter", "Magician", "Monk", "Necromancer", "Paladin", "Ranger", "Rogue", "Shadowknight", "Warrior", "wizard"};
            String[] barbClasses = {"Rogue", "Shaman", "Warrior"};
            String[] delfClasses = {"Cleric", "Enchanter", "Magician", "Necromancer", "Rogue", "Shadowknight", "Warrior", "Wizard"};
            String[] dwarfClasses = {"Rogue", "Paladin", "Warrior"};
            String[] eruditeClasses = {"Cleric", "Enchanter", "Magician", "Necromancer", "Paladin", "Shadowknight", "Wizard"};
            String[] gnomeClasses = {"Cleric", "Enchanter", "Magician", "Necromancer", "Paladin", "Rogue", "Shadowknight", "Warrior", "Wizard"};
            String[] halfelfClasses = {"Bard", "Druid", "Paladin", "Ranger", "Rogue", "Shadowknight", "Warrior", "Wizard"};
            String[] halflingClasses = {"Rogue", "Cleric", "Warrior", "Druid", "Paladin", "Ranger"};
            String[] highelfClasses = {"Cleric", "Enchanter", "Magician", "Paladin", "Wizard"};
            String[] humanClasses = {"Rogue", "Bard", "Warrior", "Cleric", "Druid", "Enchanter", "Magician", "Monk", "Necromancer", "Paladin", "Ranger", "Shadowknight", "Wizard"};
            String[] iksarClasses = {"Monk", "Shaman", "Warrior", "Necromancer", "Shadowknight"};
            String[] ogreClasses = {"Shadowknight", "Shaman", "Warrior"};
            String[] trollClasses = {"Shadwknight", "Shaman", "Warrior"};
            String[] woodelfClasses = {"Bard", "Druid", "Ranger", "Rogue", "Warrior"};

            int random = (int) (Math.random()*races.length);
            int random2 = (int) (Math.random()*classes.length);

            label.setText("Your Race is: "  + races[random]); 
            label2.setText("Your Class is: " + classes[random2]);
        }
    }
}

在一个数组中,您可以指定它拥有的所有种族。因此,当您随机选择一个类时,您可以选择一个相关的随机种族

我建议您解决的第一个问题是使用Enum。我已经创建了样本枚举类,类似于

String[][] raceAndClasses={{"Barbarian","Dark Elf","Dwarf"},{"Bard", "Druid", "Cleric"},{"Rogue", "Shaman", "Warrior"}};
}

现在,从上述代码中删除种族和类的字符串数组。相反,通过调用返回所有枚举数组的枚举类上的getEnumConstants,选择一个枚举作为您的比赛,而不是您一直在做的字符串,在您的情况下,所有比赛都具有有效的类。现在在这个枚举中调用get方法,它将返回您为该竞赛枚举输入的任何可能的类。您可以随机选择该类,因为它是字符串数组,并从中向前移动

上述课程的相关代码如下所示:

public enum RestrictedComboEnum {

Barbarian(new String[] { "bard", "druid" }), 
Dwarf(new String[] { "hello","trial" });

RestrictedComboEnum(String[] classes) {
    this.classes = classes;
}

String[] classes;

public String[] getClasses() {
    return this.classes;
}
在上面的例子中,当应用程序选择野蛮人作为种族时,可能的选择是吟游诗人或德鲁伊,而对于矮人来说则是hello和trial。因此,请根据需要填写枚举

从您的评论来看,您似乎对Java非常陌生,所以出于学习目的,您可以尝试使用Enum,因为您需要它们。
当代码增长时,这将使您的生活比使用2d数组容易得多。

现在,它还会弹出一个随机种族和类,但它没有考虑到您不能将某些类作为特定种族。这就是我制作其他字符串的原因。你可以使用2d数组。我还应该说我对java知之甚少。我花了10个小时完成这项工作,我从几个不同的网站上获得了它。Java编码有点难,这可能会有所帮助,现在查看一下我将如何设置它,thanksi将给出更详细的示例@JeremyZavalayour right im new,very new。但我将研究更多的枚举和2d数组,只是为了熟悉它们。这就解决了它。非常感谢你。现在,如果我可以格式化jfram将东西放入框中的方式,那么在面板上添加标签时,需要提供标签的位置。查一查,这并不难。就我个人而言,我更喜欢网格包布局,这样我就可以在我想要的地方添加任何东西。
        RestrictedComboEnum[] combinations = RestrictedComboEnum.class
                .getEnumConstants();

        int random = (int) (Math.random() * combinations.length);

        RestrictedComboEnum selectedCombo = combinations[random];

        int random2 = (int) (Math.random() * selectedCombo.getClasses().length);

        label.setText("Your Race is: " + combinations[random]);
        label2.setText("Your Class is: "+ selectedCombo.getClasses()[random2]);