Java 定义变量的数组

Java 定义变量的数组,java,arrays,Java,Arrays,目前,我的代码如下所示: public String Q1o1 = "oops"; public String Q1o2 = "oops"; public String Q1o3 = "oops"; public String Q1o4 = "oops"; public String Q1o5 = "oops"; public String Q1o6 = "oops"; public String Q1o7 = "oops"; public String Q2o1 = "oops"; publ

目前,我的代码如下所示:

public String Q1o1 = "oops";
public String Q1o2 = "oops";
public String Q1o3 = "oops";
public String Q1o4 = "oops";
public String Q1o5 = "oops";
public String Q1o6 = "oops";
public String Q1o7 = "oops";

public String Q2o1 = "oops";
public String Q2o2 = "oops";
public String Q2o3 = "oops";
public String Q2o4 = "oops";
public String Q2o5 = "oops";
public String Q2o6 = "oops";
public String Q2o7 = "oops";

public String Q3o1 = "oops";
public String Q3o2 = "oops";
public String Q3o3 = "oops";
public String Q3o4 = "oops";
public String Q3o5 = "oops";
public String Q3o6 = "oops";
public String Q3o7 = "oops";

public String Q4o1 = "oops";
public String Q4o2 = "oops";
public String Q4o3 = "oops";
public String Q4o4 = "oops";
public String Q4o5 = "oops";
public String Q4o6 = "oops";
public String Q4o7 = "oops";

public String Q5o1 = "oops";
public String Q5o2 = "oops";
public String Q5o3 = "oops";
public String Q5o4 = "oops";
public String Q5o5 = "oops";
public String Q5o6 = "oops";
public String Q5o7 = "oops";

public String Q6o1 = "oops";
public String Q6o2 = "oops";
public String Q6o3 = "oops";
public String Q6o4 = "oops";
public String Q6o5 = "oops";
public String Q6o6 = "oops";
public String Q6o7 = "oops";

public String[] optionvalues1 = {Q1o1, Q1o2, Q1o3, Q1o4, Q1o5, Q1o6, Q1o7};
public String[] optionvalues2 = {Q2o1, Q2o2, Q2o3, Q2o4, Q2o5, Q2o6, Q2o7};
public String[] optionvalues3 = {Q3o1, Q3o2, Q3o3, Q3o4, Q3o5, Q3o6, Q3o7};
public String[] optionvalues4 = {Q4o1, Q4o2, Q4o3, Q4o4, Q4o5, Q4o6, Q4o7};
public String[] optionvalues5 = {Q5o1, Q5o2, Q5o3, Q5o4, Q5o5, Q5o6, Q5o7};
public String[] optionvalues6 = {Q6o1, Q6o2, Q6o3, Q6o4, Q6o5, Q6o6, Q6o7};
public String[][] optionsarray = {optionvalues1,optionvalues2,optionvalues3,optionvalues4,optionvalues5,optionvalues6};
我是否可以定义数组中的字符串,这样代码就不会那么长

我认为我没有必要定义一个字符串,然后将其放入数组中。我不能将字符串定义为数组

所以基本上我的问题是,有没有办法缩短我的代码

你是说像这样吗

public String[][] optionsarray = {
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" },
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" },
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" },
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" },
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" },
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" } };
public String[][] optionsarray = new String[6][7];
{
    for (String[] row : this.optionsarray)
        Arrays.fill(row, "oops");
}
或者像这样

public String[][] optionsarray = {
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" },
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" },
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" },
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" },
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" },
        { "oops", "oops", "oops", "oops", "oops", "oops", "oops" } };
public String[][] optionsarray = new String[6][7];
{
    for (String[] row : this.optionsarray)
        Arrays.fill(row, "oops");
}
所以基本上我的问题是,有没有办法缩短我的代码

是的,如果字符串完全相同,则可以使用循环:

String[][] optionsarray = new String[6][7];
for (int i = 0; i < optionsarray.length; i++)
  for (int j = 0 ; j < optionsarray[i].length; j++)
    optionsarray[i][j] = "oops";
String[][]选项数组=新字符串[6][7];
对于(int i=0;i
如果您知道要使用哪些字符串初始化2D数组,则只需执行以下操作即可

final String[][] example = { { "1", "2", "3" }, { "4", "5", "6" }, { "7", "8", "9" } };

你可以大大缩短它。例如:

public String[][] optionsarray = new String[6][7];

{
    for (String[] row : optionsarray) {
        Arrays.fill(row, "oops");
    }
}

它使用实例初始值设定项块,但您可以在构造函数(或其他地方)中使用初始化循环。

现在是使用类和集合的时候了

class Question{
    public List<String> options;
    public Question(){
        options=new ArrayList<>();
        options.add("oops");
        options.add("oops");
        options.add("oops");
        options.add("oops");
    }
}
课堂提问{
公开列表选项;
公众问题({
选项=新的ArrayList();
选项。添加(“oops”);
选项。添加(“oops”);
选项。添加(“oops”);
选项。添加(“oops”);
}
}
然后去别的地方

List<Question> questions=new ArrayList<>();
questions.add(new Question());
List questions=new ArrayList();
添加(新问题());
现在,您可以将此
问题
对象发送到任何您想要的地方


这种方法更易于维护,冗余更少。

我正在其他地方更改值,“oops”只是一个占位符。请查看此问题的答案:这真的是你的问题吗?你在尝试做一些我无法想象的事情…为什么“哎呀”?默认值
null
对我来说同样有意义。更新,@Andreas.Main这里的内容是变量名,我想保持这样?@JacquesCelliers“这还会在我的数组Q1o1、Q1o2等中吗…”不。如果你需要这些变量,你必须像以前那样编写它们。但我很有信心你不需要它们。这是因为如果更改数组中的值,变量中的值将保持不变,反之亦然。。。