本文已参与「新人创作礼」活动,一起开启掘金创作之路。
题目要求:按顺序旋转立方体,输出旋转后的结果。
立方体的前后左右上下分别为3、4、1、2、5、6。F表示向前翻转、B表示向后翻转,L表示像左翻转,R表示向右翻转、C表示顺时针旋转、A表示逆时针旋转。 在不做任何操作的情况下,默认打印123456。现要求输入一定规则,要求输出一定结果(如:输入RAF,输出431256)。
源码如下:
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Square {
public static void main(String[] args) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
String input="RAF";
if(input == null || input.trim().length() ==0){
System.out.println(-1);
return;
}
if(!input.trim().matches("^[R|L|F|B|A|C]+$")){
System.out.println(-1);
return;
}
Square square = new Square();
if(input.length()>0){
for (String c : input.trim().split("")){
Method method = Square.class.getMethod(c,null);
method.invoke(square);
}
}
square.print();
}
int front =3;
int back =4;
int left =1;
int right =2;
int up =5;
int down =6;
public void print(){
System.out.println(String.format("%s%s%s%s%s%s", left, right, front, back, up, down));
}
//前翻
public void F(){
//交换前后上下四个面
int tmp= up;
up = back;
back = down;
down = front;
front =tmp;
}
//后翻
public void B(){
//交换前后上下四个面
int tmp= up;
up = front;
front = down;
down = back;
back =tmp;
}
//左翻
public void L(){
//交换上下左右四个面
int tmp= up;
up = right;
right = down;
down = left;
left =tmp;
}
//右翻
public void R(){
//交换上下左右四个面
int tmp= up;
up = left;
left = down;
down = right;
right =tmp;
}
//顺时针
public void C(){
//交换前后左右四个面
int tmp= front;
front = right;
right = back;
back = left;
left =tmp;
}
//逆时针
public void A(){
//交换前后左右四个面
int tmp= front;
front = left;
left = back;
back = right;
right =tmp;
}
}