`

输入一个数字,这个数字表示行数,每个行数一个颜色,最后输出输入次数最多的颜色。

 
阅读更多

这个题目翻译是:输入一个数字,这个数字表示行数,每个行数一个颜色,最后输出输入次数最多的颜色。

我的思路是:输入数字(Scanner),输入颜色(Scanner),用Map集合储存数据,判断数字,遍历选出最多次数的颜色,通过值传递


Java数组的长度是固定的,在同一个数组中只能存放相同类型的数据。为了能方便存储和操纵数目不固定的一组数据,JDK类库提供了Java集合,所有的Java集合类都位于java.util包中,Java集合主要分为以下3种类型:set,list,map。set不按特定方式排序,并且没有重复对象。list:按照索引位置 排序,可以有重复对象。map:每一个元素包含一对键对象和值对象,集合没有重复的键对象,值对象可以重复。那么我们这里用map类型来存储数据,因为这样可以键对值方式来判断。

List(列表):ArrayList,创建对象:List list<数据类型> = new ArrayList<数据类型>();

Map: Map<String,String> map = new HashMap<String,String>();

HashMap迭代器:遍历Hash中的元素

在Hash中可以直接使用以下方法遍历(所有键)KeySet,然后通过键可以找出需要的值
1
2
3
4
5
6
HashMap<String,String> mp = new HashMap<String,String>();
for (String i : mp.keySet()) 
    //String 是mp中的键的对应类型 i 是对应的KeySet中的每一个键值  
    System.out.println( mp.get(i)); 
}

 

package sequence;

import java.util.HashMap;
import java.util.Map;
import java.util.ArrayList;
import java.util.List;

import java.util.Scanner;

public class Main1004 {

    public static void main(String[] args) {

        Scanner in = new Scanner(System.in);
        int T = in.nextInt();
        List<String> list = new ArrayList<>();
        while (true) {
            Map<String, Integer> aMap = new HashMap<>();

            if (T != 0) {
                int m = T;
                while (T > 0) {
                    String bString = in.next();
                    if (aMap.get(bString) == null) {
                        aMap.put(bString, 1);
                    } else {
                        int count = aMap.get(bString);
                        aMap.remove(bString);
                        count++;
                        aMap.put(bString, count);
                    }
                    T--;
                }
                int i = 0;
                String result = null;
                for (String key : aMap.keySet()) {
                    int a = aMap.get(key);
                    if (a > i) {
                        i = a;
                        result = key;
                    }
                }
                list.add(result);
            }             
            else {
                for (int i = 0; i < list.size(); i++) {
                    System.out.println(list.get(i));
                }

                return;
            }


        }

    }
}

 

  • 大小: 60.9 KB
分享到:
评论

相关推荐

    Python练习集100题

    - 数字分割:将一个整数分割成各个位数。 - **实现思路**: 1. 遍历100至999之间的所有数字。 2. 对每个数字,将其分解为个位、十位、百位。 3. 计算每位数字的立方和并与原数比较。 #### 程序14:正整数分解质...

    Python练习集100题.pdf

    输入数字a和累加次数。 2. 使用循环生成数列并累加。 3. 输出最终结果。 #### 程序19:寻找完数 - **知识点**: - 数学判断:定义完数并判断。 - 循环结构:遍历1至1000内的每一个数。 - **实现思路**: 1. ...

    (完整版)最新版c语言经典习题100例(最全面)-(3).doc

    【程序 5】:这是一个排序问题,可以使用冒泡排序、选择排序等方法,将输入的三个整数按从小到大的顺序排列并输出。 【程序 6】:打印字符图案,可能需要用到for或while循环以及字符数组。通过控制循环次数和打印星...

    C语言实例100题.doc

    - 解答:通过循环遍历,对每个数进行两次开方判断,确保两个条件都满足。 4. **日期转换**: - 输入年月日,输出该日期在当年中的位置。 - 解决方法:使用switch语句处理不同月份的天数,考虑闰年情况。 5. **...

    Excel VBA实用技巧大全 附书源码

    03006引用最后一个工作表 03007引用所有的工作表 03008引用指定的多个工作表 03009引用新建的工作表 03010引用包含特定单元格的工作表 03011引用工作表名称中包含特定字符串的工作表 03012获取工作表名称 03013获取...

    基于FPGA的VGA控制器实现.pdf

    以640x480分辨率和60Hz的刷新频率为例,每秒实际扫描的是60场,每场的行数是525行,每行的有效数据点为640个,因此整个屏幕的数据点总数为800(行消隐后肩+行同步+行消隐前肩)* 525(场消隐后肩+场同步+场消隐前肩+...

    linux shell 编程教程

    3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所...

    shell 编程指南pdf

    3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所...

    JavaScript实用范例词典04-14

    5.30 弹出一个无属性栏的窗口... 132 5.31 弹出广告窗口... 133 5.32 弹出多个窗口... 134 5.33 指定弹出窗口的位置(IE) 135 5.34 指定弹出窗口的位置(Netscape) 136 5.35 弹出一个居中显示的窗口... 137 5.36...

    LINUX与UNIX SHELL编程指南(很全)

    3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所...

    linux与unix shell 编程(下)

    3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所...

    LINUX与UNIX SHELL编程指南.rar

    3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所...

    Linux与Unix Shell编程指南(PDF格式,共30章)

    3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所...

    Linux与unix shell编程指南1.rar

    3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所...

    shell教程-30章,下了之后会让你大吃一惊,相当好

    3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所...

    LINUX与UNIX SHELL编程指南

    3.1.4 创建一个新的crontab文件 24 3.1.5 列出crontab文件 24 3.1.6 编辑crontab文件 24 3.1.7 删除crontab文件 25 3.1.8 恢复丢失的crontab文件 25 3.2 at命令 25 3.2.1 使用at命令提交命令或脚本 26 3.2.2 列出所...

Global site tag (gtag.js) - Google Analytics