蓝桥杯实例的第一题,这题的思路其实非常简单,只需要用数组定义六个面,再定义每个面中的小模块即可,一维数组、二维数组皆可。
给出的X、Y、Z的三种转法则分别定义三个方法即可。
困难的是如何实时读取输入的xyz,这里我想了个办法就是定义一个数组,储存输入的数组,再用循环读取数组,当读取到最后一个字符就脱出循环。
package project2;
import java.util.Scanner;
public class mofangnanti {
// * 0为绿色,1为红色,2为白色
// * 3为蓝色,4为橙色,5为黄色
// * 每个元素分别为左下,右下,左上,右上
static int[][] Cube=new int[][]{{0,0,0,0},{1,1,1,1},{2,2,2,2},{3,3,3,3},{4,4,4,4},{5,5,5,5}};
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
char[] s=new char[100];
String a=scanner.nextLine();
for (int i=0;i<a.length();i++){
s[i]=a.charAt(i);
}
for (int i=0;s[i]=='x'||s[i]=='y'||s[i]=='z';i++){
if(s[i]=='x'){turnX();}
if(s[i]=='y'){turnY();}
if(s[i]=='z'){turnZ();}
}
Judge(0,3);
Judge(1,2);
Judge(2,1);
}
public static void turnX(){
int temp1=Cube[1][0];
int temp2=Cube[1][2];
int temp3=Cube[2][0];
int temp4=Cube[2][1];
int temp5=Cube[4][1];
int temp6=Cube[4][3];
int temp7=Cube[5][0];
int temp8=Cube[5][1];
Cube[5][0]=temp2;
Cube[5][1]=temp1;
Cube[1][0]=temp4;
Cube[1][2]=temp3;
Cube[2][0]=temp5;
Cube[2][1]=temp6;
Cube[4][1]=temp7;
Cube[4][3]=temp8;
int Turn1=Cube[0][0];
int Turn2=Cube[0][1];
int Turn3=Cube[0][2];
int Turn4=Cube[0][3];
Cube[0][0]=Turn2;
Cube[0][1]=Turn4;
Cube[0][2]=Turn1;
Cube[0][3]=Turn3;
}
public static void turnY(){
int temp1=Cube[0][1];
int temp2=Cube[0][3];
int temp3=Cube[5][1];
int temp4=Cube[5][3];
int temp5=Cube[3][1];
int temp6=Cube[3][3];
int temp7=Cube[2][1];
int temp8=Cube[2][3];
Cube[2][1]=temp1;
Cube[2][3]=temp2;
Cube[0][1]=temp3;
Cube[0][3]=temp4;
Cube[5][1]=temp5;
Cube[5][3]=temp6;
Cube[3][1]=temp7;
Cube[3][3]=temp8;
int Turn1=Cube[1][0];
int Turn2=Cube[1][1];
int Turn3=Cube[1][2];
int Turn4=Cube[1][3];
Cube[1][0]=Turn2;
Cube[1][1]=Turn4;
Cube[1][2]=Turn1;
Cube[1][3]=Turn3;
}
public static void turnZ(){
int temp1=Cube[0][2];
int temp2=Cube[0][3];
int temp3=Cube[1][2];
int temp4=Cube[1][3];
int temp5=Cube[3][2];
int temp6=Cube[3][3];
int temp7=Cube[4][2];
int temp8=Cube[4][3];
Cube[4][2]=temp1;
Cube[4][3]=temp2;
Cube[0][2]=temp3;
Cube[0][3]=temp4;
Cube[1][2]=temp5;
Cube[1][3]=temp6;
Cube[3][2]=temp7;
Cube[3][3]=temp8;
int Turn1=Cube[2][0];
int Turn2=Cube[2][1];
int Turn3=Cube[2][2];
int Turn4=Cube[2][3];
Cube[2][0]=Turn2;
Cube[2][1]=Turn4;
Cube[2][2]=Turn1;
Cube[2][3]=Turn3;
}
public static void Judge(int i,int j){
int n=Cube[i][j];
if(n==0){
System.out.print('绿');
}else if (n==1){
System.out.print('红');
}else if (n==2){
System.out.print('白');
}else if (n==3){
System.out.print('蓝');
}else if (n==4){
System.out.print('橙');
}else if (n==5){
System.out.print('黄');
}
}
}
PS:这个程序在idea上可以成功运行且结果正确,但是在蓝桥杯的平台同样的输入运行错误,有没有人能帮我解答一下为什么。ಥ_ಥ