【问题标题】:How to check if a value in an Array is contained in the same array as its following one如何检查数组中的值是否包含在与其下一个数组相同的数组中
【发布时间】:2023-03-25 12:55:01
【问题描述】:

在我的 Java 程序中,我有一个字符串数组,每个字符串数组包含 3 个值。

String[][] actions = 
                {
                    new String[]{"R", "R'", "R2"}, 
                    new String[]{"L", "L'", "L2"}, 
                    new String[]{"D", "D'", "D2"}, 
                    new String[]{"U", "U'", "U2"}, 
                    new String[]{"F", "F'", "F2"}, 
                    new String[]{"B", "B'", "B2"}
                };

现在我让随机化器从这些数组中随机挑选 25 个值,并将结果保存在一个普通的字符串数组中(我们称之为结果)。现在我想检查结果中的值 0 是否包含在与值 1 相同的数组中,这意味着如果值 0 是“U”并且值 1 是“U”,它应该重新滚动随机化器的值 1,忽略数组值 0 在最后。最后我想要一个字符串数组,其中没有字符串与其下一个在同一个数组中。

【问题讨论】:

  • 您的{"x", "x", "x2"} 形式的数组all 是否仅适用于每个数组的x 的不同值?我不得不说我发现你的问题很难理解......
  • 我还是迷路了。你有一个字符串数组。您将从这个二维数组中随机选择 25 个值。然后,您将遍历 25 个值的数组,并将索引 i 处的值与 (i+1) 进行比较。如果它们不同,您想通过从二维数组中选取来重新滚动吗?
  • @coffeeaddict 假设 results[i] = "R" 和 results[i + 1] = "R2"。它们都在同一个数组中。我不希望同一个数组中的两个值在结果数组中直接紧随其后,因此我想重新滚动结果 [i + 1] 的随机化器,以便它给出来自不同数组的值。
  • 这是一个魔方移动生成器,如果序列中的一个移动是转右面 (R),那么您不希望下一个移动将其转为相反的方式(R')或一直围绕(R2)。我认为最好的方法是跟踪最后一个来自哪个数组,并避免再次从中选择另一个数组,而不是事后检测问题并重新滚动。
  • @DavidConrad 是的,没错! :D

标签: java arrays string


【解决方案1】:

根据您的评论,您可能正在寻找类似的东西?

public void mainMethod() {

    ...

    for(int i=0; i<(results.length-1); i++) {
      compare(results, i);  
    }
}

private void compare(String[] results, int index) {
   // compare if both values are in the same array
   if(getRowIndex(results[index]) == getRowIndex(results[index+1])) {
         reRoll(results, (index+1)); // reroll if so
         compare(results, index); // revalidate in case it re-rolls to the same array value
   }
}

private void reRoll(String[] results, int index) {
    //TODO
}

private void getRowIndex(...) {
    //TODO
}

最后两种方法取决于您要如何实现它。有很多方法...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-15
    • 2021-08-19
    • 2015-10-28
    相关资源
    最近更新 更多