「魔方java实现」java魔方矩阵
今天给各位分享魔方java实现的知识,其中也会对java魔方矩阵进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
- 1、一款基于MVVM的魔方计时器,喜欢魔方的朋友千万不要错过
- 2、魔方矩阵的Java版的魔方矩阵算法
- 3、编java程序求解n阶魔方矩阵代码
- 4、java魔方小站动画怎用啊,求教程,详细
- 5、关于Java基础编程的一个问题--回形魔方阵
一款基于MVVM的魔方计时器,喜欢魔方的朋友千万不要错过
还有更多功能等待各位魔友去开发哦
也就是消息共享,这个应该是项目中耗时最长的部分,因为我设计了两个页面要求实现数据共同更新,计时页面 的数据回传,打乱公式的单一性等等,我一共使用了三种实现,而且因为是Mvvm架构所以所有消息传递的逻辑都写在viewmodel中。 RxBus,是我最喜欢用的也是用的最多的,利用了Rxjava来实现观察和订阅的功能,对于比如主页面讲打乱公式传到计时器页面是用了粘性事件传输,相当于是先传输后接收,Rxbus比较简单,此处我直接使用了框架中封装好的Rxbus。 Messenge,一款轻量级全局的消息通信工具,主要是完成一些简单的页面通信功能,写起来比Rxbus简单而且相对方便易读。 全局的shareViewModel,在callback中写一个shareViewModel并封装为单例,让其只有一个实例因此可以在需要通信的ViewModel都得到它的引用,在需要观察的页面对其进行观察,通过改变LiveData来完成通信的需求。我其实开始是很想利用Livedata进行页面通信操作,因此写出来这个shareViewModel,感觉写的并不好,后来想一想应该可以借鉴github上的LiveEventBus的思想来做一个类似RxBus的封装,但是感觉用起来还是没有Rxbus方便和易读,因此浅尝辄止。
从主页面和计时器页面侧滑可以实现页面的切换,使用了Blankj的SwipePanel,使用比较简单,可以自己设置触发位置,出发效果以及监听侧滑的事件,源码只有六百多行,非常具有参考价值。
因为android并没有原生的毫秒计时器,所以我基于handler实现了一个毫秒级的计时器,具体可以看util包中的mychorometer。
项目请移步这里
魔方矩阵的Java版的魔方矩阵算法
/***魔术矩阵,也被称为魔方矩阵。目前魔术矩阵主要有三种结构:N为奇数、N为4的倍数、N为其它偶数(4n+2)。br/*其中目前很多数学家都还在研究“N为4的倍数”、“N为其它偶数(4n+2)”,可见它们对于初学者而言太难。br/*因此此处演示的代码,仅仅考虑N为奇数的情况。br/*此代码作为课件提供给学生参考,在学完数组、循环、判断后练习。br/*@authorluo_wenqiang在126点com*@version1.0.0*/classMagicArray{publicstaticvoidmain(String[]args){/*1.把1放在第一行的最中间2.每个数字向右上角填充3.如果往右已经是最大数了,就从最左边重新继续4.如果往上已经是最大数了,就从最下边重新继续5.如果遇到行数的整数倍,则下一个数直接放到该数的下面*//*1.声明一个n*n二维数组2.声明一个int类型的变量记录每个元素递增的值,每次自加即可3.需要一个嵌套循环来填充二维数组3.1.把横向的索引认为x,x=n/23.2.把纵向的所应认为y,y=03.3.在循环中,先把x、y坐标上的值填充,然后计算下一个坐标*/intn=3;int[][]array=newint[n][n];intcounter=1;//自加的计数器intx=n/2;inty=0;//二维数组,需要用两层的嵌套循环来完成比较简单for(inti=0;in*n;i++){//根据坐标填充值array[y][x]=counter;//计算下一个坐标的位置if(counter%n==0){//如果counter是n的整数倍,下一个坐标是在当前数字的下面y++;}else{x++;y--;if(y0){//如果y超出范围,把y设置成最大y=n-1;}if(x==n){//如果x超出范围,把x设置成最小x=0;}}//使用完以后计数器需要自加counter++;}for(int[]row:array){for(inti:row){System.out.print(i);System.out.print(\t);}System.out.println();}}}
编java程序求解n阶魔方矩阵代码
import java.util.Scanner;
public class Matrix {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("请输入n*n数组,n=");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[][] a = new int[n][n];//定义n*n数组
int result = 0;
for(int i=0; in; i++){
for(int j=0; jn; j++){
System.out.println("请输入第"+i+"行,第"+j+"列元素:");
a[i][j]=sc.nextInt();
}
result +=a[i][i];
}
System.out.println("对角线元素和为:"+result);
}
}
java魔方小站动画怎用啊,求教程,详细
你先点java动画,显示一个X,然后再点java动画下载(上面),下载后,就可以打开它。要不然就是内存不够或没有打开它,你试一下退出再进来,应该就可以了。
关于Java基础编程的一个问题--回形魔方阵
//完成了,请楼主测试吧~~~ 这个就是模拟矩阵旋转的问题
public class TTT {
public static void main(String[] args){
//RC就是行列数,试试5 6 7 10等数值,都能正确输出,呵呵~~
int rc = 4;
int[][] dat = new int[rc][rc];
int count = 0;
//初始化数据
for(int i=0; irc; i++){
for(int j=0; jrc; j++){
dat[i][j]=-1;
}
}
while(notFinished(dat,rc)){
for(int i=0; irc; i++){
int jj = -1;//存放未被填充数据的行
for(int j=0; jrc; j++){
if(dat[j][i]==-1){
jj = j;break;
}
}
//找到了未填充的行在这里处理
if(jj-1){
while(irc dat[jj][i]==-1){
dat[jj][i++]=++count;
}
dat = rotate(dat,rc);
}
}
}
//这里是修正起始位置的
if(rc%2==1){
for(int i=0; i3; i++)
dat = rotate(dat,rc);
}
else{
dat = rotate(dat,rc);
}
//打印结果
for(int i=0; irc; i++){
for(int j=0; jrc; j++){
System.out.print(dat[i][j]+"\t");
}
System.out.println("\n");
}
}
//对临时结果做逆时针90度旋转
private static int[][] rotate(int[][] dat,int rc){
int[][] tmp = new int[rc][rc];
for(int i=0; irc; i++){
for(int j=0; jrc; j++){
int t = dat[i][j];
tmp[rc-j-1][i]=t;
}
}
return tmp;
}
private static boolean notFinished(int[][] dat,int rc) {
for(int i=0; irc; i++){
for(int j=0; jrc; j++)
if(dat[i][j]==-1)
return true;
}
return false;
}
}
魔方java实现的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java魔方矩阵、魔方java实现的信息别忘了在本站进行查找喔。