下面是完整的代码,实现了要求的功能,但是应该还可以改进- package bbs;
- import java.util.Scanner;
- class Cube {
- private String x = "";
- private String y = "";
- private String z = "";
- Cube(String x, String y, String z) {
- this.x = x;
- this.y = y;
- this.z = z;
- }
- public String getX() {
- return x;
- }
- public void setX(String x) {
- this.x = x;
- }
- public String getY() {
- return y;
- }
- public void setY(String y) {
- this.y = y;
- }
- public String getZ() {
- return z;
- }
- public void setZ(String z) {
- this.z = z;
- }
- public void getAttribute(Cube c) {
- this.x = c.getX();
- this.y = c.getY();
- this.z = c.getZ();
- }
-
- public void getTurnedAttributeX(Cube c) {
- this.x = c.getX();
- this.y = c.getZ();
- this.z = c.getY();
- }
-
- public void getTurnedAttributeY(Cube c) {
- this.x = c.getZ();
- this.y = c.getY();
- this.z = c.getX();
- }
-
- public void getTurnedAttributeZ(Cube c) {
- this.x = c.getY();
- this.y = c.getX();
- this.z = c.getZ();
- }
- public String Attribute() {
- return this.getX() + this.getY() + this.getZ();
- }
- }
- public class RubikCube {
- public static void main(String[] args) {
- Scanner scan = new Scanner(System.in);
- System.out.println("请输入操作序列,请勿输入x、y、z以外的字符,不区分大小写!");
- String str = scan.next();
- turn(str);
- scan.close();
- }
- public static void turn(String str) {
- char[] arr = str.toCharArray();
- //初始化7个块
- Cube xyz = new Cube("绿", "红", "白");
- Cube xy = new Cube("绿", "红", "橙");
- Cube xz = new Cube("绿", "橙", "白");
- Cube yz = new Cube("蓝", "红", "白");
- Cube x = new Cube("绿", "橙", "黄");
- Cube y = new Cube("蓝", "红", "橙");
- Cube z = new Cube("蓝", "橙", "白");
- Cube temp1 = new Cube(null, null, null);
- Cube temp2 = new Cube(null, null, null);
- Cube temp3 = new Cube(null, null, null);
- Cube temp4 = new Cube(null, null, null);
- for (int i = 0; i <= arr.length - 1; i++) {
- if (arr[i] == 'x' ||arr[i]=='X') {//沿x轴转动时,x面颜色不变,y面和z面颜色对调
- temp1.getTurnedAttributeX(xz);
- temp2.getTurnedAttributeX(xyz);
- temp3.getTurnedAttributeX(xy);
- temp4.getTurnedAttributeX(x);
- xyz.getAttribute(temp1);
- xy.getAttribute(temp2);
- x.getAttribute(temp3);
- xz.getAttribute(temp4);
- }
- if (arr[i] == 'y'|| arr[i] == 'Y') {//沿y轴转动时,y面颜色不变,x面和z面颜色对调
- temp1.getTurnedAttributeY(xy);
- temp2.getTurnedAttributeY(xyz);
- temp3.getTurnedAttributeY(yz);
- temp4.getTurnedAttributeY(y);
- xyz.getAttribute(temp1);
- yz.getAttribute(temp2);
- y.getAttribute(temp3);
- xy.getAttribute(temp4);
- }
- if (arr[i] == 'z' || arr[i]=='Z') {//沿z轴转动时,z面颜色不变,x面和y面颜色对调
- temp1.getTurnedAttributeZ(yz);
- temp2.getTurnedAttributeZ(xyz);
- temp3.getTurnedAttributeZ(xz);
- temp4.getTurnedAttributeZ(z);
- xyz.getAttribute(temp1);
- xz.getAttribute(temp2);
- z.getAttribute(temp3);
- yz.getAttribute(temp4);
- }
- }
- System.out.println(xyz.Attribute());
- /*System.out.println("xyz=" + xyz.Attribute()
- + "\nxy=" + xy.Attribute()
- + "\nxz=" + xz.Attribute()
- + "\nyz=" + yz.Attribute()
- + "\nx=" + x.Attribute()
- + "\ny=" + y.Attribute()
- + "\nz="+ z.Attribute());*/
- }
- }
复制代码 |