java系统增加查找算法详解

2023-11-15

题干
数学老师小y 想写一个成绩查询系统,包含如下指令:

insert [name] [score],向系统中插入一条信息,表示名字为name的学生的数学成绩为score。
find [name],表示查找名字为name的学生的数学成绩。
注意有些同学可能会为了刷分多次选课,查询的时候给出最大成绩即可。学生的名字是由小写字母组成。成绩是一个 0 \ldots 1000…100 的整数。

老师找到你,想你帮他完成这个系统。

输入格式
输入若干行,每行都是insert [name] [score]或者find [name]的形式,或一行end表示输入结束。输入行数不大于 10001000,每个学生名字长度不大于 2020 个字符。

输出格式
对于每个查询,输出查询的学生的最高成绩,如果系统中不存在该学生,输出 -1−1。
-------------------------------------------------------成功解决下面bug-----------------------------------------------------------------------------------------
问题总结:

  1. 中间很多输出了内容没有删掉

  2. 你没有考虑一个情况是可能有人的名字是 insert

  3. num 的 return 值显然存在问题
    成功代码:

import java.util.HashMap;
import java.util.Scanner;

/**

  • @author 张泰

  • @Version v 1.0

  • @date 2019/12/13
    */
    public class Main {
    public static void main(String[] args) {

     Scanner sc = new Scanner(System.in);
     HashMap<String, String> map = new HashMap<>();
     while (sc.hasNext()) {
         String s = sc.nextLine();
         int show = show(map, s);
    

// System.out.println(show);
if (show == -1) {
return;
}
}
}

public static int show(HashMap<String, String> map, String s1) {
    String[] s2 = s1.split(" ");
    if (s2[0].equals("insert")) {
        for (String s7 : map.keySet()) {
            if (s7.equals(s2[1])) {
                if (Integer.valueOf(map.get(s7)) < Integer.valueOf(s2[2])) {
                    map.put(s2[1], s2[2]);
                }
                return 1;
            }
        }
        map.put(s2[1], s2[2]);
        return 1;
    }
    if (s2[0].equals("find")) {
        for (String s : map.keySet()) {
            if (s2[1].equals(s)) {
                System.out.println(map.get(s2[1]));
                return 1;
            }
        }
        System.out.println(-1);
        return 1;
    }
   return -1;
}

}

---------------------------------------------------------bug---------------------------------------------------------------------------------------
测试数据
//没有问题
insert zhangsan 90
insert lisi 78
insert xiaoming 86
find xiaoming
find jack
end
//有问题
insert zhangsan 90
insert zhangsan 99
insert lisi 78
insert xiaoming 86
find xiaoming
find zhangsan
find luqiang
find songtianhao
end
//问题剖析
find方法本应该打印两次-1却打印一次-1,并且每次打印完能够查询到的名字都会打印一次-1
//题目源路径
https://nanti.jisuanke.com/t/A1140
//目前进展进度(直接导入java项目即可用)
import java.util.HashMap;
import java.util.Scanner;

/**

  • @author 张泰

  • @Version v 1.0

  • @date 2019/12/13
    */
    public class demo01 {
    //程序设计:成绩查询系统------------------有bug-------------------A1140-----------
    public static void main(String[] args) {
    int num=0;
    Scanner sc = new Scanner(System.in);
    HashMap<String, String> map = new HashMap<>();
    while (sc.hasNext()) {
    String s = sc.nextLine();
    if (s.contains(“insert”)) {
    //instert
    insert(s,map);
    }
    //find
    if (s.contains(“find”)) {
    System.out.println(s);
    find(s, map, num);
    }
    //end
    if (s.equals(“end”)) {
    return;
    }
    }
    }
    public static void insert(String s1,HashMap<String, String> map){

         String[] insert_s = s1.split("insert ");
         String[] s = insert_s[1].split(" ");
         for (String s7 : map.keySet()) {
             if (s7.equals(s[0])) {
                 if (Integer.valueOf(map.get(s7)) > Integer.valueOf(s[1])) {
                     map.put(s7, s[1]);
                 }
             }
         }
         map.put(s[0], s[1]);
    

    }
    public static void find(String s1,HashMap<String, String> map,int num){

         for (String s : map.keySet()) {
    

// System.out.println(s);
if (s1.contains(s)) {
System.out.println(map.get(s));
if (num == 0) {
continue;
} else {
System.out.println(num);
}
num= 0;
} else {
num = -1;
}
}
}
public static int show(String s1) {

        return -1;
}

}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java系统增加查找算法详解 的相关文章

  • 计算机网络 概念

    一 计算机网络概念 计算机网络的组成 有若干个节点和连接的节点的链路组成 主机的概念 与网络相连接的计算机称为主机 计算机网络 是一个将分散的 具有独立功能的计算机系统 通过通信设备和线路 由功能完善的软件实现资源共享和信息传递 计算机网络
  • 再谈缓存

    凡是涉及管理数据的系统 都可以用图书馆来考虑 都要面临图书的位置查找和实际摆放两个问题 对应的两大组件就是就是index store 所有的数据管理系统都包含这两部分 缓存从过期又什么触发的角度分为容量触发和时间触发 容量触发 就是缓存满了
  • 内置tomcat整合SpringMVC

    spring MVC是一个基于MVC模式的表现层框架 在spring2 5以后增加了注解功能 使得开发变得更加高效 快捷 由于spring MVC是spring框架的一个模块 springmvc和spring无需通过中间整合层进行整合 可以
  • SQLServer 2008R2 配置允许外网访问

    SQL Server 2008 1433端口启用的解决方案 cqs 2012 CSDN博客
  • R聚类分析航空公司数据(筛选出不同的客户类别)

    效果图如下 图片是将3万四千条航空公司数据用k means算法分成五个类 并通过ggplot2包作图作出来的特征属性 我们将通过不同的属性值 分析出高价值用户 低价值用户 主力用户 一般用户 潜力用户 可以分析得F M C自然是越高越好 C
  • ext3grep恢复linux下误删除的文件

    在linux下使用rm rf时千万要小心 但是总有不小心的时候 导致误删除一些文件 这里我做个试验 故意删除 data 2 txt文件 测试文件恢复 此时2 txt文件已经删除 1 安装ext3grep软件 wget http ext3gr
  • vue之路由的嵌套(父子路由)

    路由的嵌套 1 配置路由 main js文件中 import Users from components Users import UserAdd from components Users UserAdd import UserList
  • 第二章 Scala入门——让你的代码跑起来

    一 Scala的安装方法 要使用Scala 首先需要保证已经安装好了Java 8 对于Linux操作系统 Java 8已经默认安装了 而使用Windows操作系统的用户 则需要在Java官网下载安装包进行安装 请在CMD PowerShel
  • 小米解bl锁跳过168小时_红米K30S至尊纪念版秒解BL工具分享支持小米红米机型秒解BL跳过168小时...

    目前小米的新机 官方风控都默认绑定7天也就是168小时才能解锁BL 部分账号需要绑定15天才能满足条件 导致很多爱玩机的小伙伴被拒门外 并不是所有人都愿意等待官方解锁时候 而跳过168小时解锁 也成为了很多小伙伴希望的事情 本工具来自ROM
  • 操作系统CPU调度

    概述 多道程序操作系统的基础 通过在进程之间切换CPU 操作系统可以提高计算机的吞吐率 对于单处理器系统 每次只允许一个进程运行 任何其他进程必须等待 直到CPU空闲能被调度为止 CPU按一定的调度算法从就绪队列中选择一个进程 把CPU的使
  • TorchVision中使用FasterRCNN+ResNet50+FPN进行目标检测

    TorchVision中给出了使用ResNet 50 FPN主干 backbone 构建Faster R CNN的pretrained模型 模型存放位置为https download pytorch org models fasterrcn
  • PE文件资源解析(七)manifest资源的解析

    mainfest资源 在这里指的是资源类型为RT MANIFEST的资源信息 通过ResHacker看到的效果图如下 manifest资源存储编码格式是UTF 8 开始3个字节是EF BB BF 解析代码如下 UTF8 EF BB BF H
  • Java练习10:输入两个正整数m和n,求其最大公约数和最小公倍数

    辗转相除法 package com qiqi test import java util Scanner 输入两个正整数m和n 求其最大公约数和最小公倍数 辗转相除法 1 用大数m 小数n得第一个余数 2 余数为0则n为最大公约数 3 余数
  • 【数据库原理选择题1-4章】

    1 1 数据库系统概述 1 1 DB DBMS 和DBS 三者之间的关系是 A DBMS包括DB和DBS B DB 包括DBMS和DBS C 不能相互包括 D DBS包括DB和DBMS 正确答案 D 2 位于用户和操作系统之间的一层数据管理
  • VS2017 登录账户时,反复让输入密码,而一直无法登陆。

    问题描述 VS2017 登录账户时 反复让输入密码 而一直无法登陆成功 最后显示无法刷新此账户凭据 解决办法 在排除是自己账户或者网络有问题后 通过清理用户数据解决问题 具体步骤如下 使用管理员权限打开命令终端 转到VS安装目录下的 Com
  • torch中的model.eval()、model.train()详解

    个人简介 深度学习图像领域工作者 工作总结链接 https blog csdn net qq 28949847 article details 128552785 链接中主要是个人工作的总结 每个链接都是一些常用demo 代码直接复制运行即
  • 欧几里得距离(欧式距离)

    文章目录 一 定义 二 公式 一 定义 欧几里得度量 欧氏距离 Euclidean Metric Euclidean Distance 指在m维空间中两个点之间的真实距离 或者向量的自然长度 即该点到原点的距离 比如 在二维和三维空间中的欧
  • 液滴/液膜蒸发过程—in文件模拟-后处理分析-Ovito/Python绘图

    关注 M r m a t e r i a l color Violet rm Mr material Mr material
  • FDR计算

    FDR计算 FDR的计算很简单 我折腾了一上午主要是因为遇到了以下几个问题 问题 FDR是什么 有什么用 怎么计算 我把几个模型的P值都合并成一个表了 所以每次运算FDR时 我需挑选特定的对象 我有多个模型 所以我想着要如何构建循环 FDR

随机推荐

  • 机器学习-人为设置函数方法和神经网络方法解决智能五子棋问题

    2 智能决策 2 1 博弈树模型算法 2 1 1 全局估算函数 此次项目中评估函数有两种 1 人为设定函数方法 更具人的经验 对一些特定的棋形在棋盘上进行检索 并且计数 最后赋予相应权值求和得到对棋盘的评价值 典型的棋形有 活一 活二 活三
  • 集成学习-理论概述

    1 集成学习概述 集成学习 ensemble learning 本身不是一个单独的机器学习算法 而是通过构建并结合多个机器学习器来完成学习任务 集成学习的特点 集成方法是一种将几种机器学习技术组合成一个预测模型的元算法 以减小方差 bagg
  • IDEA中如何导入module并成功运行

    在写Java项目的时候我们通常需要导入module 需要注意的是导入过程需要以下两大步骤 否则会出现无法运行的情况 以下我以导入 service edu 模块为例 一 将module文件拷贝到工程目录下 直接将需要导入的module文件 s
  • 李宏毅深度学习——优化方法

    记录了关于梯度的历史 SGD SGD with Momentum 防止gradient为0 SGD停止不动了 sgd with momentum 前面的移动会累加到下一步 sgd with momentum 前面的移动会累加到下一步 所以小
  • 【07节】Python3+Selenium4自动化 unittest 测试框架详解

    文章目录 1 unittest 框架介绍 2 创建单元测试步骤 3 unittest 模块介绍 3 1 TestCase 类 3 1 1 TestCase 类常用方法 3 1 2 TestCase 类其他方法 3 2 setUp 与 tea
  • 【cpu or gpu】【tensorflow】怎么查看用的是CPU还是GPU

    方法1 from tensorflow python client import device lib print device lib list local devices 参考博客 可用设备为 name device CPU 0 dev
  • 设计模式之桥接模式

    文章目录 一 手机操作问题 1 传统方案解决手机操作问题 2 传统方案解决手机操作问题分析 二 桥接模式 1 基本介绍 2 原理类图 三 桥接模式解决手机操作的问题 1 类图 2 代码 2 抽象类 抽象类子类 行为类接口 接口实现类 客户端
  • 关于api-ms-win-crt-runtimel1-1-0.dll缺失问题的解决方法

    1 问题描述 在win7系统中安装一个截图软件Snipaste时 出现api ms win crt runtimel1 1 0 dll缺失问题 如下图 2 问题原因 在网上查找资料 发现说是在C window system 或者C wind
  • 八十六.快速排序与归并排序(查找与排序(二))——JAVA

    查找与排序 一 查找与排序 三 查找与排序 四 一 分治法 分治法 将原问题划分成若干个规模较小而结构与原问题一致的子问题 递归地解决这些子问题 然后再合并其结果 就得到原问题的解 容易确定运行时间 是分支算法的优点之一 分治模式在每一层递
  • UE TSubclassOf

    定义 TSubclassOf
  • opencv中Mat矩阵的合并与拼接

    opencv如何将两个矩阵按行或者按列合并 在Matlab中将两个矩阵合并非常方便 按行合并 如A B C 按列合并如A B C 其实opencv有自带函数 vconcat和hconcat函数 用于矩阵的合并与图像的拼接 vconcat B
  • React中获取元素(ref获取方式)

    受控组件 在react中 input标签的部分属性受到react控制 如onChange是基于input 和change 事件进行封装 非受控组件 对于没有经历过封装的一些属性或者方法 可以通过ref去获取这个dom元素 再去获取或触发其自
  • 快速学会linux上的chrony服务

    文章目录 chrony服务 1 安装与配置 2 同步网络时间服务器 3 配置时间服务器 将本机作为服务器 4 chronyc命令 5 强制时区 chrony服务 Chrony 是一个开源自由的网络时间协议 NTP 的客户端和服务器软软件 它
  • 智慧井盖监测管理系统解决方案

    一 方案概述 近年来 随着城市化的不断发展 城市地下管道设施的一步步完善 井盖作为城市基础设施中必不可少的一部分 其重要性也逐渐凸显 然而 在实际应用中 井盖监测和管理并不容易 如井盖地理位置分散 数量庞大 传统的巡检方式成本高 效率低 不
  • java定时器Timer的使用

    在JDK库中Timer类主要负责计划任务的功能 也就是在指定的时间开始执行某一个任务 Timer类的主要作用就是设置计划任务 但是封装任务的类的是TimerTask类 下面展示几个例子 在指定的日期执行一次某一任务 import java
  • C语言常用math函数

    算法笔记 第2章 fabs double x 对double型变量取绝对值 floor double x 和ceil double x 对double型变量进行向下取整和向上取整 pow double r double p 计算 r p r
  • 几种集中式管理框架比较

    最近因为项目管理上的需要 调研集中式管理工具 百度Disconf 携程Apollo 阿里ACM 三者都可以满足集中式配置 并提供监听 实时改变配置 关于3个框架的使用以及搭建请自行参考官方API文档 不再叙述 对比了3个框架的配置 如下 d
  • 精确时钟同步协议ptp/IEEE-1588v2协议-------(1)简介

    本文目录 1 从角色的角度来区分 2 从时钟类型的角度来区分 2 1 在IEEE 1588 2002中定义了普通时钟 OC ordinary clock 和边界时钟 BC boundary clock 这二种类型的时钟 2 2 在IEEE
  • 【neo4j】win10上利用neo4j-admin导入csv

    原因 我需要导入CN DBpedia到Neo4j中 包含900万 的百科实体以及6700万 的三元组关系 普通逐条插入可能速度太慢 所以要使用neo4j admin命令来进行导入 CN DBpedia原始数据直提供了txt格式的三元组数据
  • java系统增加查找算法详解

    题干 数学老师小y 想写一个成绩查询系统 包含如下指令 insert name score 向系统中插入一条信息 表示名字为name的学生的数学成绩为score find name 表示查找名字为name的学生的数学成绩 注意有些同学可能会