配列に入れた100個の整数の合計値を出力するプログラムがあります。
これに1秒ごとに乱数で出力した整数を1つ追加し、一番古い整数は削除するという機能を追加したいのですが、
どのようにすれば実現できますか?
一秒ごとに何かを行う、と言うところまでは実装しましたが、データの移し変え?の方法が分かりません。
環境はandroid studioです。
import android.annotation.TargetApi;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.widget.TextView;
import java.util.Arrays;
public class MainActivity extends AppCompatActivity implements Runnable{
int Date[]=new int[100]; int i; int sum=0 ; Double ans; public static String testtext; private Thread mThread; public static Handler mHandler; private TextView mTextView; public TextView Testtext; public TextView Testtext2; public static long count = 0; int timing=1000; @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); for(i=0;i<100;i++){ Date[i]= (int)( (Math.random()*100)); sum+=Date[i]; } ans=(double)(sum/100); mTextView = (TextView)findViewById(R.id.textView); Testtext = (TextView)findViewById(R.id.textView2); Testtext2 = (TextView)findViewById(R.id.textView3); Testtext.setText(Arrays.toString(Date)); Testtext2.setText(String.valueOf(ans)); mHandler = new Handler() { //メッセージ受信 public void handleMessage(android.os.Message message) { //メッセージの表示 String text = (String) message.obj; if(message.what==0) { mTextView.setText(text); } if(message.what==2) { Testtext.setText(text); } //メッセージの種類に応じてswitch文で制御すれば //イベント制御に利用可能 }; }; } @Override public void onResume(){ super.onResume(); mThread = new Thread(this); //スレッド処理を開始 if(mThread != null ){ mThread.start(); } count=0; } @Override public void onPause(){ super.onPause(); //スレッドを削除 mThread = null; } //スレッドによる更新処理 public void run() { long time = System.currentTimeMillis(); while (mThread != null) { long now = System.currentTimeMillis(); if(now - time > timing){ //Message msg = new Message(); //Message msg = Message.obtain(); Message msg = mHandler.obtainMessage(); msg.obj = new String("ループが"+ count + "回終了しました"); //ハンドラへのメッセージ送信 mHandler.sendMessage(msg); //スレッドの利用変数を初期化 time = now; count++; } } }
}
回答1件
あなたの回答
tips
プレビュー