用android去写一个小程序
Posted Fench
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用android去写一个小程序相关的知识,希望对你有一定的参考价值。
前言:
软工的一个小作业:实现“黄金分割小游戏”, 需要结对编程,队友:陈乐云 共用时两天。
早期思路设计:
采用键值对的形式,以Map作为存储结构。优点:能够将数据与用户对应,缺点:采用java实现过于复杂,工程量过大,需要消耗大量资源,类型转换容易出错。
后期思路设计:
采用二维数组:第一行用于存储用户输入原始数据,第二行用于存储中间数据(第一行的与G值做差的绝对值),第三行用于保存用户得分。
优点:实现简单,易于运算
分工:
前期:陈乐云负界面设计 和 代码的检查 中期: 陈乐云负责代码的检查,bug检查 后期:陈乐云负责App测试
我负责算法的实现,界面优化 我负责编码和bug订正 我负界面的优化,代码调试
App界面设计过程:
第一版代码:
第一版代码只是简单的实现后台的部分逻辑,主要用于测试逻辑的准确性,并没有做具体的测试。
package cn.sau.Test; import java.util.Arrays; import java.util.Collection; public class testGolden { static int number = 10; public static void main(String[] args) { double[][] array = new double[10][3]; for(int i = 0 ;i<number;i++) { for(int j = 0 ;j<2;j++) if(j==0) array[i][j]=i+10; else { array[i][2]=0; array[i][j] = 0; } } //平均值 double average = 0; for(int i = 0; i<number;i++){ average = average +array[i][0]; } int x = number; average = average /x; //G值 double G =average *0.618; //相近度 for(int i = 0; i<number;i++){ array[i][1] = Math.abs(array[i][0] -average); } //min:最近; max:最远 double min = array[0][1]; double max = array[0][1]; for(int i = 1; i<number; i++){ if(min >array[i][1]){ min =array[i][1]; } if(max<array[i][1]){ max =array[i][1]; } } System.out.println("max:"+max +"\\n min:" +min); //统计得分 for(int i = 0; i<number;i++){ if(array[i][1]==min){ array[i][2] =number; } else if(array[i][1] == max){ array[i][2]=-2; } } for(int i = 0 ;i<10;i++) { System.out.print(array[i][2] +"\\n"); } } }
第二版代码:
第二版代码主要是在第一个版的基础上,实现对android平台的移植,比进行了大量的测试。
package com.example.m.goldengame10; import android.app.AlertDialog; import android.content.DialogInterface; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; /* 黄金分割小游戏1.0版本 实现以下功能: 单机操作 固定用户为10 2016/10/16 作者:Finch & xiaoPang */ public class MainActivity extends AppCompatActivity { int number =10; //总人数 int count = 1; //局数判断 double[][] array = new double[10][3]; TextView news ; EditText user1 ; EditText user2; EditText user3 ; EditText user4; EditText user5; EditText user6 ; EditText user7 ; EditText user8 ; EditText user9 ; EditText user10; Button submit ; Button clean; protected void onCreate(Bundle savedInstanceState) { Log.v("Button","on"); for(int i = 0; i<number;i++){ array[i][0]=0; array[i][1]=0; array[i][2]=0; } super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); news =(TextView)findViewById(R.id.news); user1 = (EditText)findViewById(R.id.user1); user2 = (EditText)findViewById(R.id.user2); user3 = (EditText)findViewById(R.id.user3); user4 = (EditText)findViewById(R.id.user4); user5 = (EditText)findViewById(R.id.user5); user6 = (EditText)findViewById(R.id.user6); user7 = (EditText)findViewById(R.id.user7); user8 = (EditText)findViewById(R.id.user8); user9 = (EditText)findViewById(R.id.user9); user10 = (EditText)findViewById(R.id.user10); submit =(Button)findViewById(R.id.submit); clean =(Button)findViewById(R.id.clean); submit.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ news.setText("第"+count+"局得分"); array[0][0] =Double.parseDouble( user1.getText().toString()); array[1][0] =Double.parseDouble( user2.getText().toString()); array[2][0] =Double.parseDouble( user3.getText().toString()); array[3][0] =Double.parseDouble( user4.getText().toString()); array[4][0] =Double.parseDouble( user5.getText().toString()); array[5][0] =Double.parseDouble( user6.getText().toString()); array[6][0] =Double.parseDouble( user7.getText().toString()); array[7][0] =Double.parseDouble( user8.getText().toString()); array[8][0] =Double.parseDouble( user9.getText().toString()); array[9][0] =Double.parseDouble( user10.getText().toString()); //平均值 double average = 0; for(int i = 0; i<number;i++){ average = average +array[i][0]; } int x = number; average = average /x; //G值 double G =average *0.698; //相近度 for(int i = 0; i<number;i++){ array[i][1] = Math.abs(array[i][0] -G); } //min:最近; max:最远 double min = array[0][1]; double max = array[0][1]; for(int i = 1; i<number; i++){ if(min >array[i][1]){ min =array[i][1]; } if(max<array[i][1]){ max =array[i][1]; } } //统计得分 for(int i = 0; i<number;i++){ if(array[i][1]==min){ array[i][2] =array[i][2] + number; } else if(array[i][1] == max){ array[i][2]=array[i][2]-2; } } user1.setText(String.valueOf(array[0][2])); user2.setText(String.valueOf(array[1][2])); user3.setText(String.valueOf(array[2][2])); user4.setText(String.valueOf(array[3][2])); user5.setText(String.valueOf(array[4][2])); user6.setText(String.valueOf(array[5][2])); user7.setText(String.valueOf(array[6][2])); user8.setText(String.valueOf(array[7][2])); user9.setText(String.valueOf(array[8][2])); user10.setText(String.valueOf(array[9][2])); count++; //每提交一次,局数加一 } }); clean.setOnClickListener(new View.OnClickListener(){ public void onClick(View v){ //初始化 for(int i= 0;i<number;i++){ array[i][0]=0; array[i][1]=0; news.setText("开始第"+count+"局,请输入数值"); news.setTextSize(30); } //自动清空数据 user1.getText().clear(); user2.getText().clear(); user2.getText().clear(); user3.getText().clear(); user4.getText().clear(); user5.getText().clear(); user6.getText().clear(); user7.getText().clear(); user8.getText().clear(); user9.getText().clear(); user10.getText().clear(); } }); } }
App界面设计:
App测试:
代码测试图集:
App测试其他图集:
总结:针对本次作业,我们还有很多需要完善的地方:1,未能实现联机模式,导致用户体验不好
2,界面设计过于简陋,体验稍差
3,算法实现未能考虑人数不确定性
当然,我们会在后期系统的学习java和android后,会及时的做出更正。
附:
android studio 项目 代码:https://git.coding.net/fench/GodlenGame-on-android.git
App下载地址A(欢迎试玩):GoldernGameAPK
队友陈乐云的博客链接:http://www.cnblogs.com/clyln/ coding账号:https://coding.net/u/Clyln), finch
2016-10-17
以上是关于用android去写一个小程序的主要内容,如果未能解决你的问题,请参考以下文章
Android获取各个应用程序的缓存文件代码小片段(使用AIDL)