用android去寫一個小程式

來源:互聯網
上載者:User

標籤:

前言:

      軟工的一個小作業:實現“黃金分割小遊戲”, 需要結對程式設計,隊友:陳樂雲(http://www.cnblogs.com/clyln/),用時兩天。

早期思路設計:

      採用索引值對的形式,以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測試其他圖集:

 

 

 

 

 附: android studio 項目 代碼:https://git.coding.net/fench/GodlenGame-on-android.git AppA(歡迎試玩):https://git.coding.net/fench/GodlenGame-on-android.git  -》GoldernGameAPK 

用android去寫一個小程式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.