首页 > 其他分享 >5.20

5.20

时间:2024-06-11 09:25:47浏览次数:17  
标签:get fen List lastTenDaysFen int 5.20 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.20,import
From: https://www.cnblogs.com/zljzy/p/18241491

相关文章

  • 5.20
    今日学习的内容主要是有关数据库操作中的触发器和储存过程。触发器(trigger)就相当于事件绑定,当你进行某类sql语句操作时将会自动调用你你所设置的触发器来进行操作。储存过程(procedure)就相当于我们Java中的方法,可以带有参数和返回值,可以在储存过程中设置多条语句,调用储存过程就相......
  • 周报 | 24.5.20-24.5.26文章汇总
    为了更好地整理文章和发表接下来的文章,以后每周都汇总一份周报。OpenCV与AI深度学习|YOLOv8自定义数据集训练实现火焰和烟雾检测(代码+数据集!)-CSDN博客周报|24.5.13-24.5.19文章汇总-CSDN博客DeepDriving|目标检测中的非极大值抑制(NMS)算法_非极大值抑制nms的基本原理......
  • 上周热点回顾(5.20-5.26)
    热点随笔:· 开源低代码框架ReZeroAPI正式版本发布,界面操作直接生成API (阿妮亚)· 【阿里云X博客园】参与征文赢面试绿通资格!还有特别福利哦! (博客园团队)· 聊聊一个差点被放弃的项目以及近期的开源计划 (程序设计实验室)· OpenAI“杀疯了”,GPT–4o模型保姆级使用教......
  • 5.20 && 5.21
    最近相当有写闲话的想法,不过每次都想把这题调完就写然后这题就调不完了(放假家长不来,我也懒得回去,所以就自己在衡水待着拿到手机发现崩铁和9都要更新,所以就开的原发现不用更新的代价是啥也没有只能把地图探索和深渊打了打nainai滴又只打了6星,手机玩甘雨体验极差我妈还......
  • 5.20 && 5.21
    最近相当有写闲话的想法,不过每次都想把这题调完就写然后这题就调不完了(放假家长不来,我也懒得回去,所以就自己在衡水待着拿到手机发现崩铁和9都要更新,所以就开的原发现不用更新的代价是啥也没有只能把地图探索和深渊打了打nainai滴又只打了6星,手机玩甘雨体验极差我妈还......
  • 5.20 && 5.21
    最近相当有写闲话的想法,不过每次都想把这题调完就写然后这题就调不完了(放假家长不来,我也懒得回去,所以就自己在衡水待着拿到手机发现崩铁和9都要更新,所以就开的原发现不用更新的代价是啥也没有只能把地图探索和深渊打了打nainai滴又只打了6星,手机玩甘雨体验极差我妈还......
  • 5.20 && 5.21
    最近相当有写闲话的想法,不过每次都想把这题调完就写然后这题就调不完了(放假家长不来,我也懒得回去,所以就自己在衡水待着拿到手机发现崩铁和9都要更新,所以就开的原发现不用更新的代价是啥也没有只能把地图探索和深渊打了打nainai滴又只打了6星,手机玩甘雨体验极差我妈还......
  • 5.20随笔
    Ubuntu下安装OpenSSHServer可以使用命令行安装openSSHServer:sudoapt-getinstallopenssh-server随后,ubuntu会自动下载并安装opensshserver,并一并解决所有依赖关系.我们也可以通过UbuntuSoftwareCenter,搜索"openssh-server",然后点安装就好了/下面介绍在window......
  • 云原生周刊:Flux 2.3 发布 | 2024.5.20
    开源项目推荐kubeinvaderskubeinvaders专为Kubernetes用户设计。它提供了一种有趣而交互式的方式来探索和可视化您的Kubernetes集群。通过类似游戏的界面,用户可以浏览他们的集群,发现资源,甚至模拟对Pod的攻击。通过kubeinvaders,管理Kubernetes环境变得引人入胜且富有信......
  • R机械设计 V4.1(2024.05.20)
    R机械设计软件是兴力剑公司为工程师提供计算、查询服务的机械设计平台。PC端包含一般设计资料、气、液压传动、联接件、机械传动、机器人、轴承、操作件、管件、润滑与密封、弹簧、材料、工具、模具、刀具、夹具、电机减速机、电气控制等多个大模块。用户只需输入已知条件,......