首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hackerrank代码的30天-第8天& C# -Runtime错误

Hackerrank代码的30天-第8天& C# -Runtime错误
EN

Stack Overflow用户
提问于 2020-12-01 20:52:34
回答 2查看 672关注 0票数 1

我在C#参加了30天的代码学习。我在8天(字典和地图)。我去运行我的代码和测试用例0,测试用例2,测试用例3,测试用例4是成功的,但是测试用例1不成功。Hackerrank向我展示了错误“运行时错误”。我不明白这个错误。谢谢。

挑战:黑客排名第8天字典和地图

谁能弄明白为什么我的30天挑战赛的代码没有通过测试用例1?

这是一项挑战:

今天,我们正在学习使用Map或Dictionary数据结构的键值对映射.请查看教程选项卡中的学习材料和教学视频!

任务给出姓名和电话号码,组装一本电话簿,将朋友的名字映射到他们各自的电话号码。然后,您将得到一个未知的名称,以查询您的电话簿。对于被查询的每个条目,在表单name=phoneNumber中的新行上打印电话簿中的相关条目;如果找不到一个条目,则打印“未找到”。

注意:您的电话簿应该是字典/地图/HashMap数据结构。

输入格式

第一行包含一个整数,表示电话簿中的条目数。后面的每一行都描述了单行上以空格分隔的值形式的条目。第一个值是朋友的名字,第二个值是-digit电话号码。

在电话簿条目行之后,有一个未知的查询行数。每一行(查询)都包含要查找的内容,您必须继续读取行,直到没有更多的输入为止。

注:姓名由小写英文字母组成,仅限姓名。

输出格式

在每个查询的新行上,如果电话簿中没有相应的条目,则打印Not;否则,以name=phoneNumber格式打印全文和格式。

这是我的代码:

代码语言:javascript
复制
using System;
using System.Collections.Generic;
using System.IO;

class Solution
{
    static void Main(String[] args)
    {
        var n = int.Parse(Console.ReadLine());
        var phoneBook = new Dictionary<string, int>();

        for (var i = 0; i < n; i++)
        {
            var entry = Console.ReadLine().Split(' ');
            var name = entry[0];
            var phone = int.Parse(entry[1]);
            phoneBook.Add(name, phone);
        }

        for (var i = 0; i < n; i++)
        {
            var name = Console.ReadLine();
            if (phoneBook.ContainsKey(name))
            {
                var phone = phoneBook[name];
                Console.WriteLine($"{name}={phone}");
            }
            else Console.WriteLine("Not found");
        }
    }
}

输入(stdin)

代码语言:javascript
复制
100000
unayklejwm 53561825
ahiff 57272140
frlrecdfxo 28001354
aeccxyrbek 21112785
mlgdk 12405837
iyiyycfngr 23841264
subnwvrqdp 77688226
vhypdqfbdy 67846211
lcnbh 86026675
lxbjpmuhis 85475547
enfifbprov 20172436
hnjctgslxf 18125412
slfoglbvah 47530087
mpsrcmrkon 44365224
jnpslqvlkx 88071512
liwyjbsfkk 50646067
kyrkhaikuf 18535535
ubvfx 43551151
krger 80787433{-truncated-}

预期产出

代码语言:javascript
复制
Not found
ipwpabdefa=14170412
Not found
toykmviqbo=11872347
mooetebtqt=70658483
fbubawkkhq=10613664
Not found
ejqxn=77321147
Not found
Not found
Not found
Not found
xgfpx=58118174
Not found
odacddldrk=73267266
Not found
iakxugylkc=41875647
Not found
djtelththc=20278224
Not found{-truncated-}

结论

代码语言:javascript
复制
Runtime Error :/

我该如何修正我的代码?

如有任何建议,将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2020-12-01 21:02:48

这个问题很清楚地写着“有几行未知的查询”。但是,您正在循环到n,而不是读取到文件的末尾。

如果可以看到代码的输出(out和err),那么在主方法中添加一个try-catch块,看看错误是什么。

票数 0
EN

Stack Overflow用户

发布于 2020-12-03 21:57:51

我完成了这个任务。

这里我的代码:

代码语言:javascript
复制
    static void Main(String[] args) {
        /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution */
    int n = Int32.Parse(Console.ReadLine());
    Dictionary <string, string> phonebook = new Dictionary <string, string>();
        
    for (int i=0; i<n; i++){
        string[] line = Console.ReadLine().Split(' ');
        phonebook[line[0]] = line[1];
    }
        
    string name;
    while ((name = Console.ReadLine()) != null){
        if (phonebook.ContainsKey(name))
            Console.WriteLine(name + "=" + phonebook[name]);
        else
            Console.WriteLine("Not found");
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65098335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档