首页 > 其他分享 >5.23

5.23

时间:2024-06-11 09:25:25浏览次数:13  
标签:get fen List lastTenDaysFen int 5.23 import

与小组成员改善完成如何完善每日心情的记录并且统计出来,根据不同的统计内容进行分析

代码行量:166行

学习所花时间:1h

 

 

package com.example.memosystem.activity;

import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

import com.example.memosystem.R;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class qingxuquxian extends AppCompatActivity {

private ListView listViewData;
private TextView textViewStatistics;
private TextView textViewRecentScores;
private List<String> dataList = new ArrayList<>();
private ArrayAdapter<String> adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_qingxuquxian);

listViewData = findViewById(R.id.listViewData);
textViewStatistics = findViewById(R.id.textViewStatistics);
textViewRecentScores = findViewById(R.id.textViewRecentScores);

// 设置适配器
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, dataList);
listViewData.setAdapter(adapter);

// 异步获取数据
new FetchDataTask().execute();
}

private class FetchDataTask extends AsyncTask<Void, Void, List<String>> {

@Override
protected List<String> doInBackground(Void... voids) {
String url = "jdbc:mysql://10.99.118.55:3306/xinli";
String user = "root";
String password = "root";

List<String> tempDataList = new ArrayList<>();
List<Integer> recentFen = new ArrayList<>();
List<String> dates = new ArrayList<>();

try (Connection connection = DriverManager.getConnection(url, user, password)) {
String query = "SELECT date, fen FROM meiri";
PreparedStatement preparedStatement = connection.prepareStatement(query);
ResultSet resultSet = preparedStatement.executeQuery();

while (resultSet.next()) {
String date = resultSet.getString("date");
int fen = resultSet.getInt("fen");
tempDataList.add("日期: " + date + ", 分数: " + fen);

recentFen.add(fen);
dates.add(date);
}

// 取最近10天的情绪分数
int startIndex = Math.max(0, recentFen.size() - 10);
List<Integer> lastTenDaysFen = recentFen.subList(startIndex, recentFen.size());
List<String> lastTenDaysDates = dates.subList(startIndex, dates.size());

// 判断情绪是否稳定
if (isStable(lastTenDaysFen)) {
tempDataList.add("最近情绪状态显示出显著的稳定性,分数波动范围极小。这种持续的情绪平稳状态反映了良好的情绪调节能力,能够有效应对日常压力和情感波动,保持内在的情绪平衡。");
} else {
tempDataList.add("最近情绪波动较大,缺乏稳定性,可能反映了情绪调节能力的不足。此种情况下,情绪可能受到外界刺激较大程度的影响,导致情绪波动频繁且剧烈,难以保持稳定的心理状态。情绪调节能力不足可能会影响个体的日常生活和工作效率,需要加强情绪调节训练以提高情绪稳定性。");
}

// 统计每个分数出现的天数
Map<Integer, Integer> fenCountMap = new HashMap<>();
for (int fen : lastTenDaysFen) {
fenCountMap.put(fen, fenCountMap.getOrDefault(fen, 0) + 1);
}

// 查找起伏较大的两天
List<Integer> changes = new ArrayList<>();
for (int i = 1; i < lastTenDaysFen.size(); i++) {
changes.add(Math.abs(lastTenDaysFen.get(i) - lastTenDaysFen.get(i - 1)));
}

int maxChangeIndex1 = changes.indexOf(Collections.max(changes));
int maxChangeIndex2 = maxChangeIndex1 == 0 ? 1 : 0;
for (int i = 0; i < changes.size(); i++) {
if (i != maxChangeIndex1 && changes.get(i) > changes.get(maxChangeIndex2)) {
maxChangeIndex2 = i;
}
}

String statistics = "最近10天每个分数出现的天数:\n";
for (Map.Entry<Integer, Integer> entry : fenCountMap.entrySet()) {
statistics += "分数 " + entry.getKey() + ": " + entry.getValue() + " 天\n";
}

statistics += "\n起伏较大的两天:\n";
statistics += lastTenDaysDates.get(maxChangeIndex1) + " 和 " + lastTenDaysDates.get(maxChangeIndex1 + 1) + "\n";
statistics += lastTenDaysDates.get(maxChangeIndex2) + " 和 " + lastTenDaysDates.get(maxChangeIndex2 + 1);

// 更新TextView用于显示最近10天的分数
StringBuilder recentScores = new StringBuilder("最近10天的分数:\n");
for (int i = 0; i < lastTenDaysDates.size(); i++) {
recentScores.append(lastTenDaysDates.get(i)).append(": ").append(lastTenDaysFen.get(i)).append("\n");
}

// Update the TextViews with the statistics and recent scores
final String finalStatistics = statistics;
final String finalRecentScores = recentScores.toString();
runOnUiThread(() -> {
textViewStatistics.setText(finalStatistics);
textViewRecentScores.setText(finalRecentScores);
});

} catch (SQLException e) {
e.printStackTrace();
tempDataList.add("获取数据时出错");
}

return tempDataList;
}

@Override
protected void onPostExecute(List<String> result) {
dataList.clear();
dataList.addAll(result);
adapter.notifyDataSetChanged();
}

private boolean isStable(List<Integer> recentFen) {
if (recentFen.isEmpty()) {
return false;
}

int startIndex = Math.max(0, recentFen.size() - 10);
List<Integer> lastTenDaysFen = recentFen.subList(startIndex, recentFen.size());

double sum = 0;
for (int fen : lastTenDaysFen) {
sum += fen;
}
double average = sum / lastTenDaysFen.size();
double variance = 0;
for (int fen : lastTenDaysFen) {
variance += Math.pow(fen - average, 2);
}
double standardDeviation = Math.sqrt(variance / lastTenDaysFen.size());

return standardDeviation <= 1;
}
}
}

标签:get,fen,List,lastTenDaysFen,int,5.23,import
From: https://www.cnblogs.com/zljzy/p/18241494

相关文章

  • 5.23
    北京地铁作业2<template><viewclass="container"><viewclass="example"><uni-formsref="form":model="form"labelWidth="80px"><uni-forms-itemlabel="起始站"......
  • 2024.5.23(周四)
    function[s,phis,k,G,E]=golds(phi,a,b,delta,epsilon)%输入:phi是目标函数,a,b是搜索区间的两个端点delta,epsilon分别是自变量和函数值的容许误差9%输出:s,phis分别是近似极小点和极小值,G是nx4矩阵。其第k行分别是a,p,q,b的第k次迭代值[ak,pk,qk,bk],E=[ds,dphi],分别是s和phis的误......
  • 5.23
    importandroid.content.ContentValues;importandroid.content.Context;importandroid.database.sqlite.SQLiteDatabase;importandroid.database.sqlite.SQLiteOpenHelper;importandroidx.annotation.Nullable;publicclassMySQLiteHelperextendsSQLiteOpenHelper{......
  • KubeSphere 社区双周报|2024.05.09-05.23
    KubeSphere社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过commit的贡献者,并对近期重要的PR进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。本次双周报涵盖时间为:2024.05.09-05.23。贡献者名单新晋KubeSpherecontribu......
  • 5.23每日总结
    计网学习要传输一个8192字节的数据字段,必须通过IP分片来分割数据,因为以太网的最大传输单元(MTU)为1500字节。这意味着一个IP数据报的总长度(包括IP头部)不能超过1500字节。我们首先假设IP头部长度为20字节(不含选项部分的标准IPv4头部长度)。这意味着每个IP数据报可以携带的数据部分最......
  • 5.23链表相交
    链接如下:https://leetcode.cn/problems/intersection-of-two-linked-lists-lcci/solutions/1395092/lian-biao-xiang-jiao-by-leetcode-solutio-2kne/这道题比较简单,暴力循环就可以结束,但是看官方题解还是有些技巧在的,索性也就记录一下。先说下我自己的思路,我自己的思路就是类似......
  • 【闲话】08.05.23
    08.05闲话众所周知,一个鲜花需要一张头图推歌:flower&CASI《藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁藁......
  • 5.23每日总结
    今天完善了软件开发的开发文档的内容。项目开发计划如下:5.1项目概述人脸识别软件是一款基于人工智能技术的应用软件,旨在通过对人脸图像进行处理和分析,实现快速准确的人脸识别功能。本项目将开发一款适用于安防领域、金融领域等多个行业的人脸识别软件,支持批量检测和识别,同时提......
  • 5.23学习总结
    使用SELECT...INTOOUTFILE语句导出数据以下实例中我们将数据表runoob_tbl数据导出到/tmp/runoob.txt文件中:mysql>SELECT*FROMrunoob_tbl->INTOOUTFILE'/tmp/runoob.txt';你可以通过命令选项来设置数据输出的指定格式,以下实例为导出CSV格式:mysql>SEL......
  • 5.23 面向对象案例分析五
    用static,引入计数器案例classUser{privateStringuid;privateStringpassword;privatestaticintcount=0;publicUser(){this("NOID","mldn");}publicUser(Stringuid){this(uid,"mldnjava&q......