gpt4 book ai didi

java - 方法不在 for (if-else) 循环中执行,并返回原始对象

转载 作者:行者123 更新时间:2023-11-30 01:53:34 25 4
gpt4 key购买 nike

我有一系列的 Action 要对魔方进行,即:

String[] clockwiseMoves = new String[6];

其中移动被表示为 F(前)、R(右)、U(上)、L(左)、B(后)、D(下)(例如,当执行 F 时,您将旋转立方体正面顺时针)。给定一个 Rubik 实例(来自 Rubik 类),我希望它执行我的 顺时针移动数组中的每个 Action 。

在我的 Rubik 类中,我有以下方法:

  1. public Rubik frontfaceRight():将 Rubik 的正面向右旋转,并返回旋转后的 Rubik 的新实例。

  2. public Rubik rightfaceRight():将 Rubik 的右面向右旋转,并返回旋转后的 Rubik 的新实例。

  3. public Rubik upfaceRight():将 Rubik 的上表面向右旋转,并返回旋转后的 Rubik 的新实例。

  4. public Rubik leftfaceRight():将 Rubik 的左面向右旋转,并返回旋转后的 Rubik 的新实例。

  5. public Rubik backfaceRight():将 Rubik 的背面向右旋转,并返回旋转后的 Rubik 的新实例。

  6. public Rubik downfaceRight():将 Rubik 的下表面向右旋转,并返回旋转后的 Rubik 的新实例。

鉴于这些,我得出以下结论:

for (int j = 0; j<clockwiseMoves.length; j++){

if (cwMethods[j].equals("F")){
originalRubik.frontfaceRight();
}

else if (cwMethods[j].equals("R")){
originalRubik.rightfaceRight();
}

else if (cwMethods[j].equals("U")){
originalRubik.upfaceRight();
}

else if (cwMethods[j].equals("L")){
originalRubik.leftfaceRight();
}

else if (cwMethods[j].equals("B")){
originalRubik.backfaceRight();
}

else if (cwMethods[j].equals("D")){
originalRubik.downfaceRight();
}
}

System.out.println(originalRubik);

但是,我的打印输出在执行 for 循环之前为我提供了初始的 Rubik,这意味着 for 循环中的方法未执行。我可以知道如何更正我的代码吗?

最佳答案

您提到这些方法返回 Rubik实例,因此当您处理 if-else 中的操作时 阻止您不将新实例分配给 originalRubik 变量,并且它仍然指向 Rubik 的初始实例。

因此,您需要捕获 Rubik 的新实例并将其分配给 originalRubik 变量以查看更改。

for (int j = 0; j<clockwiseMoves.length; j++){

if (cwMethods[j].equals("F")){
originalRubik = originalRubik.frontfaceRight();
}

else if (cwMethods[j].equals("R")){
originalRubik = originalRubik.rightfaceRight();
}

else if (cwMethods[j].equals("U")){
originalRubik = originalRubik.upfaceRight();
}

else if (cwMethods[j].equals("L")){
originalRubik = originalRubik.leftfaceRight();
}

else if (cwMethods[j].equals("B")){
originalRubik = originalRubik.backfaceRight();
}

else if (cwMethods[j].equals("D")){
originalRubik = originalRubik.downfaceRight();
}
}

System.out.println(originalRubik);

关于java - 方法不在 for (if-else) 循环中执行,并返回原始对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55206278/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com