用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)

Android课程---Android Studio使用小技巧:提取方法代码片段

android小知识点代码片段

提效小技巧——记录那些不常用的代码片段

微信小程序代码片段

Android 片段复制