开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 303|回复: 8
收起左侧

[已解决] 一个非常简单的问题

 关闭 [复制链接]
结帖率:100% (2/2)
发表于 2025-11-28 14:35:34 | 显示全部楼层 |阅读模式   广东省汕尾市
100精币
我连接一个wss,会收到1到200的数字,每秒可以会收到几十次,肯定是会有重复的,打个比方数字到140至150的范围内就提示我,提示我的前提是要有收到小于130的数字才提示我,因为有可能一开始就收到200-195-185-175在到140-150的时候这样的情况就不提示,因为这样是从高往下降的就不能提示我,如果数字降到110-120-125,然后在升到140-150的时候就提示我,要怎么实现


补充内容 (2025-11-28 17:04):
是不是需要一个数组还是什么记录起来,还有一点就是提示我之后就结束了,就不用在继续了

补充内容 (2025-11-28 17:09):
能不能用一个数组还是什么全部记录起来,如果出现了140-150的数字就判断数组里面有没有小于130的数字,如果没有就不提示,如果有就提示

最佳答案

查看完整内容

因为数字的范围是 1-200 , 所以直接把数组设置为200个成员: [e=1].版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 __启动窗口_创建完毕 .局部变量 数组, 整数型, , "200" .局部变量 数, 整数型 .局部变量 当前, 整数型 .局部变量 存在, 逻辑型 .局部变量 退出, 逻辑型 .计次循环首 (100, ) ' 模拟输入100次 当前 = 取随机数 (1, 200) .如果真 (当前 ≥ 140 且 当前 ≤ 150) 存在 = 假 . ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值

结帖率:100% (1/1)
发表于 2025-11-28 14:35:35 | 显示全部楼层   浙江省温州市
因为数字的范围是 1-200 , 所以直接把数组设置为200个成员:
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
数组整数型200
整数型 
当前整数型 
存在逻辑型 
退出逻辑型 
计次循环首 (100, )  ' 模拟输入100次
当前 = 取随机数 (1, 200)
如果真 (当前 ≥ 140 当前 ≤ 150)
存在 = 假
计次循环首 (130, 数)
如果真 (数组 [] > 0)
存在 = 真
跳出循环 ()

计次循环尾 ()
退出 = 假
如果 (存在 = )
调试输出 (“不存在”)
调试输出 (“存在”, 数)
退出 = 真

如果真 (退出 = )
跳出循环 ()
数组 [当前] = 数组 [当前] + 1
计次循环尾 ()


i支持库列表   支持库注释   
spec特殊功能支持库

开始运行被调试程序
* “存在” | 42
被调试易程序运行完毕

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 2 天

发表于 2025-11-28 14:47:40 | 显示全部楼层   江西省南昌市
大神,别急,只要我一发信息,必有人会抢着给你答案,等上一等,  …………                               其实这个问题简单容易实现。

补充内容 (2025-11-28 15:21):
不应该呀……大神没来?不是特别喜欢跟我比吗?回复问题我发1次,他发N次
回复

使用道具 举报

结帖率:50% (3/6)

签到天数: 2 天

发表于 2025-11-28 15:14:05 | 显示全部楼层   安徽省合肥市
[JavaScript] 纯文本查看 复制代码
class NumberMonitor {
    constructor() {
        this.hasReceivedLow = false;  // 是否收到过小于130的数字
        this.lastValue = null;        // 上一次收到的数字
        this.isRising = false;        // 当前是否处于上升趋势
    }
    
    processNumber(num) {
        console.log(`收到数字: ${num}`);
        
        // 检查是否收到过小于130的数字
        if (num < 130) {
            this.hasReceivedLow = true;
            console.log(`收到低值数字 ${num},已标记`);
        }
        
        // 检测趋势变化
        if (this.lastValue !== null) {
            if (num > this.lastValue) {
                if (!this.isRising) {
                    console.log('检测到开始上升趋势');
                }
                this.isRising = true;
            } else if (num < this.lastValue) {
                if (this.isRising) {
                    console.log('上升趋势结束');
                }
                this.isRising = false;
            }
        }
        

        this.checkAlert(num);
        
        this.lastValue = num;
    }
    
    checkAlert(num) {
        // 只有在140-150范围内,且有过低值数字,且处于上升趋势时才提示
        if (num >= 140 && num <= 150) {
            if (this.hasReceivedLow && this.isRising) {
                console.log(`数字 ${num} 在140-150范围内`);
                this.showAlert(num);
            } else if (!this.hasReceivedLow) {
                console.log(` 数字 ${num} 在范围内,但未收到过小于130的数字`);
            } else if (!this.isRising) {
                console.log(` 数字 ${num} 在范围内,但不是上升趋势`);
            }
        }
    }
    
    showAlert(num) {

        alert(`:数字 ${num} 达到140-150范围!`);
    }
    
    // 重置状态(如果需要重新开始监控)
    reset() {
        this.hasReceivedLow = false;
        this.lastValue = null;
        this.isRising = false;
        console.log('监控状态已重置');
    }
}

// 使用示例
const monitor = new NumberMonitor();

// 模拟WebSocket消息处理
function simulateWebSocket() {
    // 模拟从高到低的情况(不应该触发警报)
    const descendingSequence = [200, 195, 185, 175, 160, 155, 150, 145];
    
    // 模拟先降后升的情况(应该触发警报)
    const risingSequence = [110, 120, 125, 130, 135, 140, 145, 150];
    
    console.log('=== 测试1: 从高到低===');
    descendingSequence.forEach((num, index) => {
        setTimeout(() => monitor.processNumber(num), index * 200);
    });
    
    setTimeout(() => {
        console.log('\n=== 重置状态 ===');
        monitor.reset();
        
        console.log('\n=== 测试2: 先降后升===');
        risingSequence.forEach((num, index) => {
            setTimeout(() => monitor.processNumber(num), index * 200);
        });
    }, descendingSequence.length * 200 + 500);
}

// 实际的WebSocket处理函数
function setupWebSocket() {
    const ws = new WebSocket('wss://your-websocket-url');
    
    ws.onopen = function() {
        console.log('WebSocket连接已建立');
    };
    
    ws.onmessage = function(event) {
        try {
            const num = parseInt(event.data);
            if (!isNaN(num)) {
                monitor.processNumber(num);
            } else {
                console.warn('收到非数字消息:', event.data);
            }
        } catch (error) {
            console.error('处理消息时出错:', error);
        }
    };
    
    ws.onclose = function() {
        console.log('WebSocket连接已关闭');
    };
    
    ws.onerror = function(error) {
        console.error('WebSocket错误:', error);
    };
}

// 启动模拟测试
simulateWebSocket();

// 实际使用时,取消注释下面这行,并注释掉 simulateWebSocket()
// setupWebSocket();
回复

使用道具 举报

结帖率:100% (1/1)
发表于 2025-11-28 15:29:40 | 显示全部楼层   浙江省温州市
用两个变量, 一个记录当前, 另一个记录上一个:
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
接收整数型 
整数型 
当前整数型 
上一个整数型 
上一个 = -1
计次循环首 (100, )  ' 模拟输入100次
当前 = 取随机数 (1, 200)
如果真 (当前 ≥ 140 当前 ≤ 150 上一个 > 0 上一个 ≤ 130)
如果 ( (当前 = 140 当前 = 150) (上一个 = 110 上一个 = 120 上一个 = 125))
调试输出 (上一个, 当前, “特殊情况出现”)
调试输出 (上一个, 当前, “出现”)

上一个 = 当前
计次循环尾 ()


i支持库列表   支持库注释   
spec特殊功能支持库

开始运行被调试程序
* 106 | 146 | “出现”
* 65 | 142 | “出现”
* 69 | 148 | “出现”
* 124 | 142 | “出现”
* 41 | 143 | “出现”
* 109 | 145 | “出现”
* 130 | 142 | “出现”
被调试易程序运行完毕
回复

使用道具 举报

结帖率:100% (26/26)
发表于 2025-11-28 15:48:56 | 显示全部楼层   福建省漳州市
直接算而已 只是你 说的 数字在 110-120-125 之间 你要出现几次 或者 只要一次就提示你而已
回复

使用道具 举报

结帖率:100% (2/2)
 楼主| 发表于 2025-11-28 17:03:51 | 显示全部楼层   广东省汕尾市
是不是需要一个数组还是什么记录起来,还有一点就是提示我之后就结束了,就不用在继续了
回复

使用道具 举报

结帖率:100% (2/2)
 楼主| 发表于 2025-11-28 17:08:50 | 显示全部楼层   广东省汕尾市
zainex 发表于 2025-11-28 15:29
用两个变量, 一个记录当前, 另一个记录上一个:
[e=1].版本 2
.支持库 spec

这个有点看不懂,能不能用一个数组还是什么全部记录,如果出现了140-150的数字就判断数组里面有没有小于130的数字,如果没有就不提示,如果有就提示然后就结束了,就不用在继续,只要提示一次就可以了
回复

使用道具 举报

结帖率:100% (1/1)

签到天数: 2 天

发表于 2025-11-28 17:39:39 | 显示全部楼层   江西省南昌市
  
子程序名返回值类型公开备 注
检测动态数据整数型 
参数名类 型参考可空数组备 注
数值 
变量名类 型静态数组备 注
数目整数型0
大小逻辑型 
i整数型 
加入成员 (数目, 数值)
数组排序 (数目, )
计次循环首 (取数组成员数 (数目), i)
返回 (数目 [i])
计次循环尾 ()
返回 (-1)
子程序名返回值类型公开备 注
_按钮2_被单击  
变量名类 型静态数组备 注
i整数型 
ss整数型 
wss整数型 
计次循环首 (200, i)
延迟 (10)
wss = 检测动态数据 (i)
调试输出 (wss)
如果真 (wss ≥ 140 wss ≤ 150)
调试输出 (“找到了数据”, wss)
跳出循环 ()

计次循环尾 ()


i支持库列表   支持库注释   
spec特殊功能支持库




* 134
* 135
* 136
* 137
* 138
* 139
* 140
* “找到了数据” | 140
被调试易程序运行完毕










补充内容 (2025-11-28 17:43):
这是为了测试分开两个写,你可以合成一个
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备2025452707号) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表