首页 > 其他分享 >5.22

5.22

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

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

代码行量:166行

学习所花时间:0.5h

 

 

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.22,import
From: https://www.cnblogs.com/zljzy/p/18241493

相关文章

  • 5.22
    北京地铁作业packagecom.cxk.baseframe.project.systemmanage.controller;importjava.util.List;importjava.util.Map;importjavax.servlet.http.HttpServletResponse;importjavax.annotation.Resource;importcom.cxk.baseframe.config.common.annotation.Log;importcom.......
  • 2024.5.22(周三)
    function[x,val,k]=dampnm(fun,gfun,Hess,x0)%功能:用阻尼牛顿法求解无约束优化问题:minf(x)%输入:x0是初始点,fun,gfun,Hess分别是目标函数和梯度Hess阵函数%输出:x,val分别是近似最优解和近似最优值,k是迭代次数maxk=5000;rho=0.5;sigma=......
  • 5.22
    明天要进行二模。我也不知道为什么我要加密,那还是加上吧。想了下还是不加密了,总有人懒得看加密的闲话的,另一些人反而会好奇,真是奇怪呢。我想把搜狗输入法卸载了。领导集团问题昨天问题的翻版了属于是。只不过这是小根堆,需要在二分时该一下边界,最终找结果要改为\(\text{find(r......
  • 力扣1542 2024.5.22
    原题网址:此处为链接个人难度评价:1700分析:很惊讶会又在力扣看到区域赛的几乎原题。此题加上一个哈希就是区域赛题目了。回文其实你只需要关注奇偶性。那么你用前缀和,维护[0:i]区间内每个数的奇偶性,此时你可以发现[0:i]和[i:j]的前缀和异或之后,为0的位就说明[i:j]内此位为偶。(也......
  • 【2024.05.22】寄出的是相片,还是我的回忆?
    这段时间一直在朋友写信,太久没写信了曾经我总是觉得照片这种载体会被淘汰,应该会被视频所取代,现在看来不是的想给朋友们一个520惊喜,所以翻了下过去的照片在打印照片的时候却陷入了回忆之中去回想按下快门的那一刻,我是什么状态,那段时间在做什么想什么或许这就是最美好的感情吧,......
  • 5.22
    【Python0031】简易带参计算器设计一个简易的参数计算器。【输入格式】第一行输入待计算的带变量参数的计算式第二行输入各变量参数的赋值序列【输出格式】输出带变量参数的计算式的计算结果【输入样例】a+ba=1,b=10【输出样例】11代码caculate=input()num=input().split("......
  • [Mac软件]PullTube 1.8.5.22视频下载工具
    应用介绍黑果魏叔:使用PullTube,您可以下载YouTube或Vimeo上托管的所有在线视频或音频,包括整个播放列表。您可以选择保留原始格式或仅提取音频。通过YouTube或Vimeo等互联网托管服务共享视频是一种常见做法,但如果您的互联网连接速度较慢,流媒体内容可能无法正常工作。为了解......
  • 5.22
    error.jsp<%@pagelanguage="java"isErrorPage="true"pageEncoding="utf-8"%><!DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN"><html><head><title>errorpage</ti......
  • 5.22每日总结
    今天主要还是学习python,我们的项目在web方面已经基本实现功能,对于项目软件可能会使用的编译软件还是python。今天主要学习了python的json部分内容。PythonJSON本章节我们将为大家介绍如何使用Python语言来编码和解码JSON对象。JSON(JavaScriptObjectNotation)是一种轻......
  • 5.22学习总结
    1.类和对象的抽象理念类和对象的概念是面向对象编程(OOP)的基础。在Python中,面向对象的设计方法提供了一种封装数据和功能的有效方式。它让我们能将现实世界的事物和行为映射到代码中,这种映射更加符合我们人类的认知方式,让我们能以更自然的方式理解和设计复杂的软件系统。类的抽......